aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/igb')
-rw-r--r--drivers/net/igb/igb_main.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 041f8e6f74f4..62348fc60e53 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -2050,13 +2050,16 @@ static void __devexit igb_remove(struct pci_dev *pdev)
2050 struct igb_adapter *adapter = netdev_priv(netdev); 2050 struct igb_adapter *adapter = netdev_priv(netdev);
2051 struct e1000_hw *hw = &adapter->hw; 2051 struct e1000_hw *hw = &adapter->hw;
2052 2052
2053 /* flush_scheduled work may reschedule our watchdog task, so 2053 /*
2054 * explicitly disable watchdog tasks from being rescheduled */ 2054 * The watchdog timer may be rescheduled, so explicitly
2055 * disable watchdog from being rescheduled.
2056 */
2055 set_bit(__IGB_DOWN, &adapter->state); 2057 set_bit(__IGB_DOWN, &adapter->state);
2056 del_timer_sync(&adapter->watchdog_timer); 2058 del_timer_sync(&adapter->watchdog_timer);
2057 del_timer_sync(&adapter->phy_info_timer); 2059 del_timer_sync(&adapter->phy_info_timer);
2058 2060
2059 flush_scheduled_work(); 2061 cancel_work_sync(&adapter->reset_task);
2062 cancel_work_sync(&adapter->watchdog_task);
2060 2063
2061#ifdef CONFIG_IGB_DCA 2064#ifdef CONFIG_IGB_DCA
2062 if (adapter->flags & IGB_FLAG_DCA_ENABLED) { 2065 if (adapter->flags & IGB_FLAG_DCA_ENABLED) {