aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMatthew Vick <matthew.vick@intel.com>2012-04-18 02:57:44 +0000
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2012-04-27 02:28:45 -0700
commita27416bbcada50173c2cf8c71d195380b9f06be2 (patch)
treeaf6f116543344734acd919357e609d1cb786783d /drivers
parente1000e: 82579 potential system hang on stress when ME enabled (diff)
downloadlinux-dev-a27416bbcada50173c2cf8c71d195380b9f06be2.tar.xz
linux-dev-a27416bbcada50173c2cf8c71d195380b9f06be2.zip
igb: Force flow control off during reset when forcing speed.
During igb_reset(), we initiate a hardware reset which will clear our flow control settings. For auto-negotiation, we re-negotiate them when linking up again, but we need to force them off properly for the forced speed case. Signed-off-by: Matthew Vick <matthew.vick@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')
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 28a37bb00c90..f40f3886eb26 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1715,6 +1715,13 @@ void igb_reset(struct igb_adapter *adapter)
if (hw->mac.ops.init_hw(hw))
dev_err(&pdev->dev, "Hardware Error\n");
+ /*
+ * Flow control settings reset on hardware reset, so guarantee flow
+ * control is off when forcing speed.
+ */
+ if (!hw->mac.autoneg)
+ igb_force_mac_fc(hw);
+
igb_init_dmac(adapter, pba);
if (!netif_running(adapter->netdev))
igb_power_down_link(adapter);