diff options
author | Greg Rose <gregory.v.rose@intel.com> | 2011-01-25 20:06:07 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2011-02-24 05:36:34 -0500 |
commit | e9f9807262083a663829d0154b3da10bafb713bb (patch) | |
tree | 91a8403be54716972ad23fb3a4d11013ffeb5c3a /drivers/net/ixgbe/ixgbe_main.c | |
parent | 55ae22d08fc9b531bc8a88b7306004e7053bb425 (diff) |
ixgbe: Enable Jumbo Frames on the X540 10Gigabit Controller
The X540 controller supports jumbo frames in SR-IOV mode. Allow
configuration of jumbo frames either in the PF driver or on behalf of
a VF.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index eca762d954c6..f0d0c5aad2b4 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -3077,6 +3077,14 @@ void ixgbe_configure_rx_ring(struct ixgbe_adapter *adapter, | |||
3077 | ixgbe_configure_srrctl(adapter, ring); | 3077 | ixgbe_configure_srrctl(adapter, ring); |
3078 | ixgbe_configure_rscctl(adapter, ring); | 3078 | ixgbe_configure_rscctl(adapter, ring); |
3079 | 3079 | ||
3080 | /* If operating in IOV mode set RLPML for X540 */ | ||
3081 | if ((adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) && | ||
3082 | hw->mac.type == ixgbe_mac_X540) { | ||
3083 | rxdctl &= ~IXGBE_RXDCTL_RLPMLMASK; | ||
3084 | rxdctl |= ((ring->netdev->mtu + ETH_HLEN + | ||
3085 | ETH_FCS_LEN + VLAN_HLEN) | IXGBE_RXDCTL_RLPML_EN); | ||
3086 | } | ||
3087 | |||
3080 | if (hw->mac.type == ixgbe_mac_82598EB) { | 3088 | if (hw->mac.type == ixgbe_mac_82598EB) { |
3081 | /* | 3089 | /* |
3082 | * enable cache line friendly hardware writes: | 3090 | * enable cache line friendly hardware writes: |
@@ -5441,8 +5449,14 @@ static int ixgbe_change_mtu(struct net_device *netdev, int new_mtu) | |||
5441 | int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN; | 5449 | int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN; |
5442 | 5450 | ||
5443 | /* MTU < 68 is an error and causes problems on some kernels */ | 5451 | /* MTU < 68 is an error and causes problems on some kernels */ |
5444 | if ((new_mtu < 68) || (max_frame > IXGBE_MAX_JUMBO_FRAME_SIZE)) | 5452 | if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED && |
5445 | return -EINVAL; | 5453 | hw->mac.type != ixgbe_mac_X540) { |
5454 | if ((new_mtu < 68) || (max_frame > MAXIMUM_ETHERNET_VLAN_SIZE)) | ||
5455 | return -EINVAL; | ||
5456 | } else { | ||
5457 | if ((new_mtu < 68) || (max_frame > IXGBE_MAX_JUMBO_FRAME_SIZE)) | ||
5458 | return -EINVAL; | ||
5459 | } | ||
5446 | 5460 | ||
5447 | e_info(probe, "changing MTU from %d to %d\n", netdev->mtu, new_mtu); | 5461 | e_info(probe, "changing MTU from %d to %d\n", netdev->mtu, new_mtu); |
5448 | /* must set new MTU before calling down or up */ | 5462 | /* must set new MTU before calling down or up */ |