Skip to content

Commit

Permalink
e1000e: restore flow control settings properly
Browse files Browse the repository at this point in the history
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: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Auke Kok authored and David S. Miller committed Oct 10, 2007
1 parent 4e6c709 commit 309af40
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 3 deletions.
1 change: 1 addition & 0 deletions drivers/net/e1000e/ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,7 @@ static int e1000_set_pauseparam(struct net_device *netdev,
hw->mac.original_fc = hw->mac.fc;

if (adapter->fc_autoneg == AUTONEG_ENABLE) {
hw->mac.fc = e1000_fc_default;
if (netif_running(adapter->netdev)) {
e1000e_down(adapter);
e1000e_up(adapter);
Expand Down
12 changes: 9 additions & 3 deletions drivers/net/e1000e/lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -639,9 +639,15 @@ s32 e1000e_setup_link(struct e1000_hw *hw)
if (e1000_check_reset_block(hw))
return 0;

ret_val = e1000_set_default_fc_generic(hw);
if (ret_val)
return ret_val;
/*
* If flow control is set to default, set flow control based on
* 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
* in case we get disconnected and then reconnected into a different
Expand Down
1 change: 1 addition & 0 deletions drivers/net/e1000e/netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -4195,6 +4195,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,

/* Initialize link parameters. User can change them with ethtool */
adapter->hw.mac.autoneg = 1;
adapter->fc_autoneg = 1;
adapter->hw.mac.original_fc = e1000_fc_default;
adapter->hw.mac.fc = e1000_fc_default;
adapter->hw.phy.autoneg_advertised = 0x2f;
Expand Down

0 comments on commit 309af40

Please sign in to comment.