瀏覽代碼

igbvf: use netif_carrier_off earlier when bringing if down

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>
Todd Fujinaka 10 年之前
父節點
當前提交
784401bfc0
共有 1 個文件被更改,包括 1 次插入2 次删除
  1. 1 2
      drivers/net/ethernet/intel/igbvf/netdev.c

+ 1 - 2
drivers/net/ethernet/intel/igbvf/netdev.c

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