|
@@ -3742,24 +3742,8 @@ static int ixgbevf_change_mtu(struct net_device *netdev, int new_mtu)
|
|
|
struct ixgbevf_adapter *adapter = netdev_priv(netdev);
|
|
|
struct ixgbe_hw *hw = &adapter->hw;
|
|
|
int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
|
|
|
- int max_possible_frame = MAXIMUM_ETHERNET_VLAN_SIZE;
|
|
|
int ret;
|
|
|
|
|
|
- switch (adapter->hw.api_version) {
|
|
|
- case ixgbe_mbox_api_11:
|
|
|
- case ixgbe_mbox_api_12:
|
|
|
- max_possible_frame = IXGBE_MAX_JUMBO_FRAME_SIZE;
|
|
|
- break;
|
|
|
- default:
|
|
|
- if (adapter->hw.mac.type != ixgbe_mac_82599_vf)
|
|
|
- max_possible_frame = IXGBE_MAX_JUMBO_FRAME_SIZE;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- /* MTU < 68 is an error and causes problems on some kernels */
|
|
|
- if ((new_mtu < 68) || (max_frame > max_possible_frame))
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
spin_lock_bh(&adapter->mbx_lock);
|
|
|
/* notify the PF of our intent to use this size of frame */
|
|
|
ret = hw->mac.ops.set_rlpml(hw, max_frame);
|
|
@@ -4104,6 +4088,23 @@ static int ixgbevf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
|
|
|
netdev->priv_flags |= IFF_UNICAST_FLT;
|
|
|
|
|
|
+ /* MTU range: 68 - 1504 or 9710 */
|
|
|
+ netdev->min_mtu = ETH_MIN_MTU;
|
|
|
+ switch (adapter->hw.api_version) {
|
|
|
+ case ixgbe_mbox_api_11:
|
|
|
+ case ixgbe_mbox_api_12:
|
|
|
+ netdev->max_mtu = IXGBE_MAX_JUMBO_FRAME_SIZE -
|
|
|
+ (ETH_HLEN + ETH_FCS_LEN);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ if (adapter->hw.mac.type != ixgbe_mac_82599_vf)
|
|
|
+ netdev->max_mtu = IXGBE_MAX_JUMBO_FRAME_SIZE -
|
|
|
+ (ETH_HLEN + ETH_FCS_LEN);
|
|
|
+ else
|
|
|
+ netdev->max_mtu = ETH_DATA_LEN + ETH_FCS_LEN;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
if (IXGBE_REMOVED(hw->hw_addr)) {
|
|
|
err = -EIO;
|
|
|
goto err_sw_init;
|