Commit f9c029db authored by Eliezer Tamir's avatar Eliezer Tamir Committed by Jeff Kirsher

e1000: call netif_carrier_off early on down

When bringing down an interface netif_carrier_off() should be
one the first things we do, since this will prevent the stack
from queuing more packets to this interface.
This operation is very fast, and should make the device behave
much nicer when trying to bring down an interface under load.

Also, this would Do The Right Thing (TM) if this device has some
sort of fail-over teaming and redirect traffic to the other IF.

Move netif_carrier_off as early as possible.
Signed-off-by: default avatarEliezer Tamir <eliezer.tamir@linux.intel.com>
Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent b23c0cc5
...@@ -516,6 +516,7 @@ void e1000_down(struct e1000_adapter *adapter) ...@@ -516,6 +516,7 @@ void e1000_down(struct e1000_adapter *adapter)
struct net_device *netdev = adapter->netdev; struct net_device *netdev = adapter->netdev;
u32 rctl, tctl; u32 rctl, tctl;
netif_carrier_off(netdev);
/* disable receives in the hardware */ /* disable receives in the hardware */
rctl = er32(RCTL); rctl = er32(RCTL);
...@@ -544,7 +545,6 @@ void e1000_down(struct e1000_adapter *adapter) ...@@ -544,7 +545,6 @@ void e1000_down(struct e1000_adapter *adapter)
adapter->link_speed = 0; adapter->link_speed = 0;
adapter->link_duplex = 0; adapter->link_duplex = 0;
netif_carrier_off(netdev);
e1000_reset(adapter); e1000_reset(adapter);
e1000_clean_all_tx_rings(adapter); e1000_clean_all_tx_rings(adapter);
......
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