aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorBruce Allan <bruce.w.allan@intel.com>2013-06-21 05:07:02 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2013-07-28 06:05:45 -0400
commitda1e2046e5f5ab268e55d30d6b74099ade0aeb6f (patch)
tree941919623ec128ba842889f64e31fe126971c273 /drivers/net
parentb43e867a022c55c1bfebcf08ac96e6bd0367b67a (diff)
e1000e: iAMT connections drop on driver unload when jumbo frames enabled
The jumbo frame configuration in the MAC/PHY should be reverted on 82579 and newer parts when the interface is brought down (not just when the MTU is changed back to standard frame size) otherwise iAMT connections (e.g. SoL, IDE-R) will be dropped and cannot be re-acquired until the MTU is changed again. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 40e6232bed27..99596a63b6d0 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -2979,17 +2979,10 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
2979 u32 pages = 0; 2979 u32 pages = 0;
2980 2980
2981 /* Workaround Si errata on PCHx - configure jumbo frame flow */ 2981 /* Workaround Si errata on PCHx - configure jumbo frame flow */
2982 if (hw->mac.type >= e1000_pch2lan) { 2982 if ((hw->mac.type >= e1000_pch2lan) &&
2983 s32 ret_val; 2983 (adapter->netdev->mtu > ETH_DATA_LEN) &&
2984 2984 e1000_lv_jumbo_workaround_ich8lan(hw, true))
2985 if (adapter->netdev->mtu > ETH_DATA_LEN) 2985 e_dbg("failed to enable jumbo frame workaround mode\n");
2986 ret_val = e1000_lv_jumbo_workaround_ich8lan(hw, true);
2987 else
2988 ret_val = e1000_lv_jumbo_workaround_ich8lan(hw, false);
2989
2990 if (ret_val)
2991 e_dbg("failed to enable jumbo frame workaround mode\n");
2992 }
2993 2986
2994 /* Program MC offset vector base */ 2987 /* Program MC offset vector base */
2995 rctl = er32(RCTL); 2988 rctl = er32(RCTL);
@@ -4034,6 +4027,12 @@ void e1000e_down(struct e1000_adapter *adapter)
4034 adapter->link_speed = 0; 4027 adapter->link_speed = 0;
4035 adapter->link_duplex = 0; 4028 adapter->link_duplex = 0;
4036 4029
4030 /* Disable Si errata workaround on PCHx for jumbo frame flow */
4031 if ((hw->mac.type >= e1000_pch2lan) &&
4032 (adapter->netdev->mtu > ETH_DATA_LEN) &&
4033 e1000_lv_jumbo_workaround_ich8lan(hw, false))
4034 e_dbg("failed to disable jumbo frame workaround mode\n");
4035
4037 if (!pci_channel_offline(adapter->pdev)) 4036 if (!pci_channel_offline(adapter->pdev))
4038 e1000e_reset(adapter); 4037 e1000e_reset(adapter);
4039 4038