aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/igb/igb_main.c
diff options
context:
space:
mode:
authorCarolyn Wyborny <carolyn.wyborny@intel.com>2013-04-29 20:21:32 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2013-05-21 05:55:38 -0400
commit41f149a285da21529bc9a0bad323df53b2f17b16 (patch)
tree978fbc9f2c583cccff763535b0ec41419309758c /drivers/net/ethernet/intel/igb/igb_main.c
parent2a0a0f1ea27ac39afd25c741a1ccc53bc5530acf (diff)
igb: Fix possible panic caused by Rx traffic arrival while interface is down
This patch reorders disabling napi and irqs during igb_down. This is done to avoid possible panic's found in other Intel drivers when Rx traffic arrives while interface is going down. Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com> Tested-by: Aaron Brown <aaron.f.brown@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.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 2c8f7e04b02b..6a0c1b66ce54 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1667,10 +1667,13 @@ void igb_down(struct igb_adapter *adapter)
1667 wrfl(); 1667 wrfl();
1668 msleep(10); 1668 msleep(10);
1669 1669
1670 for (i = 0; i < adapter->num_q_vectors; i++) 1670 igb_irq_disable(adapter);
1671
1672 for (i = 0; i < adapter->num_q_vectors; i++) {
1673 napi_synchronize(&(adapter->q_vector[i]->napi));
1671 napi_disable(&(adapter->q_vector[i]->napi)); 1674 napi_disable(&(adapter->q_vector[i]->napi));
1675 }
1672 1676
1673 igb_irq_disable(adapter);
1674 1677
1675 del_timer_sync(&adapter->watchdog_timer); 1678 del_timer_sync(&adapter->watchdog_timer);
1676 del_timer_sync(&adapter->phy_info_timer); 1679 del_timer_sync(&adapter->phy_info_timer);