aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/igb/igb_main.c
diff options
context:
space:
mode:
authorTodd Fujinaka <todd.fujinaka@intel.com>2015-03-20 20:41:53 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2015-03-20 20:45:12 -0400
commitf28ea083a3d21abec434f429f1375b3639b234c4 (patch)
tree546f1ae79709f4f2eaf9edfaa88189d4a8978c2e /drivers/net/ethernet/intel/igb/igb_main.c
parent152c0a976c71386c67c89969acc427dc5cf802b8 (diff)
igb: 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>
Diffstat (limited to 'drivers/net/ethernet/intel/igb/igb_main.c')
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index f366b3b96d03..0e07545ccc97 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1776,6 +1776,7 @@ void igb_down(struct igb_adapter *adapter)
1776 wr32(E1000_RCTL, rctl & ~E1000_RCTL_EN); 1776 wr32(E1000_RCTL, rctl & ~E1000_RCTL_EN);
1777 /* flush and sleep below */ 1777 /* flush and sleep below */
1778 1778
1779 netif_carrier_off(netdev);
1779 netif_tx_stop_all_queues(netdev); 1780 netif_tx_stop_all_queues(netdev);
1780 1781
1781 /* disable transmits in the hardware */ 1782 /* disable transmits in the hardware */
@@ -1797,12 +1798,9 @@ void igb_down(struct igb_adapter *adapter)
1797 } 1798 }
1798 } 1799 }
1799 1800
1800
1801 del_timer_sync(&adapter->watchdog_timer); 1801 del_timer_sync(&adapter->watchdog_timer);
1802 del_timer_sync(&adapter->phy_info_timer); 1802 del_timer_sync(&adapter->phy_info_timer);
1803 1803
1804 netif_carrier_off(netdev);
1805
1806 /* record the stats before reset*/ 1804 /* record the stats before reset*/
1807 spin_lock(&adapter->stats64_lock); 1805 spin_lock(&adapter->stats64_lock);
1808 igb_update_stats(adapter, &adapter->stats64); 1806 igb_update_stats(adapter, &adapter->stats64);