ixgb: call netif_carrier_off early on down
authorEliezer Tamir <eliezer.tamir@linux.intel.com>
Sat, 21 Mar 2015 00:41:52 +0000 (17:41 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 21 Mar 2015 00:41:52 +0000 (17:41 -0700)
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: Eliezer Tamir <eliezer.tamir@linux.intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgb/ixgb_main.c

index 11a1bdbe3fd9dcdd7e3da5094e34c83d1c151b56..31f91459312f1757fcd795eb3cd512cd12911b59 100644 (file)
@@ -285,6 +285,8 @@ ixgb_down(struct ixgb_adapter *adapter, bool kill_watchdog)
        /* prevent the interrupt handler from restarting watchdog */
        set_bit(__IXGB_DOWN, &adapter->flags);
 
+       netif_carrier_off(netdev);
+
        napi_disable(&adapter->napi);
        /* waiting for NAPI to complete can re-enable interrupts */
        ixgb_irq_disable(adapter);
@@ -298,7 +300,6 @@ ixgb_down(struct ixgb_adapter *adapter, bool kill_watchdog)
 
        adapter->link_speed = 0;
        adapter->link_duplex = 0;
-       netif_carrier_off(netdev);
        netif_stop_queue(netdev);
 
        ixgb_reset(adapter);