igbvf: use netif_carrier_off earlier when bringing if down
authorTodd Fujinaka <todd.fujinaka@intel.com>
Sat, 21 Mar 2015 00:41:54 +0000 (17:41 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 21 Mar 2015 00:45:12 +0000 (17:45 -0700)
Use netif_carrier_off() first, since that will prevent the stack from
queuing more packets to this IF. This operation is fast, and should
behave much nicer when trying to bring down an interface under load.

Reported-by: Eliezer Tamir <eliezer.tamir@linux.intel.com>
Signed-off-by: Todd Fujinaka <todd.fujinaka@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/igbvf/netdev.c

index c17ea4b8f84d07bcaafe8965e5ff821d4b7b5480..95af14e139d769254e8b3e20982b37a5888ebbba 100644 (file)
@@ -1519,6 +1519,7 @@ void igbvf_down(struct igbvf_adapter *adapter)
        rxdctl = er32(RXDCTL(0));
        ew32(RXDCTL(0), rxdctl & ~E1000_RXDCTL_QUEUE_ENABLE);
 
+       netif_carrier_off(netdev);
        netif_stop_queue(netdev);
 
        /* disable transmits in the hardware */
@@ -1535,8 +1536,6 @@ void igbvf_down(struct igbvf_adapter *adapter)
 
        del_timer_sync(&adapter->watchdog_timer);
 
-       netif_carrier_off(netdev);
-
        /* record the stats before reset*/
        igbvf_update_stats(adapter);