Commit 309af40b authored by Auke Kok's avatar Auke Kok Committed by David S. Miller

e1000e: restore flow control settings properly

After a cable unplug the forced flow control settings were lost
accidentally and the flow control settings fell back to the default
EEPROM determined values. This breaks for people who want to
run without fc enabled - after a cable reset the driver would
refuse to run with fc disabled.
Signed-off-by: default avatarAuke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 4e6c709c
...@@ -301,6 +301,7 @@ static int e1000_set_pauseparam(struct net_device *netdev, ...@@ -301,6 +301,7 @@ static int e1000_set_pauseparam(struct net_device *netdev,
hw->mac.original_fc = hw->mac.fc; hw->mac.original_fc = hw->mac.fc;
if (adapter->fc_autoneg == AUTONEG_ENABLE) { if (adapter->fc_autoneg == AUTONEG_ENABLE) {
hw->mac.fc = e1000_fc_default;
if (netif_running(adapter->netdev)) { if (netif_running(adapter->netdev)) {
e1000e_down(adapter); e1000e_down(adapter);
e1000e_up(adapter); e1000e_up(adapter);
......
...@@ -639,9 +639,15 @@ s32 e1000e_setup_link(struct e1000_hw *hw) ...@@ -639,9 +639,15 @@ s32 e1000e_setup_link(struct e1000_hw *hw)
if (e1000_check_reset_block(hw)) if (e1000_check_reset_block(hw))
return 0; return 0;
ret_val = e1000_set_default_fc_generic(hw); /*
if (ret_val) * If flow control is set to default, set flow control based on
return ret_val; * the EEPROM flow control settings.
*/
if (mac->fc == e1000_fc_default) {
ret_val = e1000_set_default_fc_generic(hw);
if (ret_val)
return ret_val;
}
/* We want to save off the original Flow Control configuration just /* We want to save off the original Flow Control configuration just
* in case we get disconnected and then reconnected into a different * in case we get disconnected and then reconnected into a different
......
...@@ -4195,6 +4195,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev, ...@@ -4195,6 +4195,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
/* Initialize link parameters. User can change them with ethtool */ /* Initialize link parameters. User can change them with ethtool */
adapter->hw.mac.autoneg = 1; adapter->hw.mac.autoneg = 1;
adapter->fc_autoneg = 1;
adapter->hw.mac.original_fc = e1000_fc_default; adapter->hw.mac.original_fc = e1000_fc_default;
adapter->hw.mac.fc = e1000_fc_default; adapter->hw.mac.fc = e1000_fc_default;
adapter->hw.phy.autoneg_advertised = 0x2f; adapter->hw.phy.autoneg_advertised = 0x2f;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment