aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ixgbe/ixgbe_main.c
diff options
context:
space:
mode:
authorGreg Rose <gregory.v.rose@intel.com>2011-01-25 20:06:07 -0500
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2011-02-24 05:36:34 -0500
commite9f9807262083a663829d0154b3da10bafb713bb (patch)
tree91a8403be54716972ad23fb3a4d11013ffeb5c3a /drivers/net/ixgbe/ixgbe_main.c
parent55ae22d08fc9b531bc8a88b7306004e7053bb425 (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.c18
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 */