igb: Force flow control off during reset when forcing speed.
authorMatthew Vick <matthew.vick@intel.com>
Wed, 18 Apr 2012 02:57:44 +0000 (02:57 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 27 Apr 2012 09:28:45 +0000 (02:28 -0700)
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>
drivers/net/ethernet/intel/igb/igb_main.c

index 28a37bb00c909fbf599600c2082569b26a979791..f40f3886eb2675ea943ad0b004ef4b0197f082b2 100644 (file)
@@ -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);