summaryrefslogtreecommitdiff
path: root/drivers/net/igb
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2010-12-12 16:45:14 +0100
committerTejun Heo <tj@kernel.org>2010-12-12 16:45:14 +0100
commit760141a53e5d72d4cc1d8c6e2a0232a24bedb36b (patch)
tree662158c0c23ee16e2bc16d9ba53eeadc6d9fa17e /drivers/net/igb
parent9beb4896cec71e40738a7752072174fbf0d5b7b4 (diff)
igb[v],ixgbe: don't use flush_scheduled_work()
All three drivers use flush_scheduled_work() similarly during driver detach. Replace it with explicit cancels. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: "David S. Miller" <davem@davemloft.net> Cc: e1000-devel@lists.sourceforge.net Cc: netdev@vger.kernel.org
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)
struct igb_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;
- /* flush_scheduled work may reschedule our watchdog task, so
- * explicitly disable watchdog tasks from being rescheduled */
+ /*
+ * The watchdog timer may be rescheduled, so explicitly
+ * disable watchdog from being rescheduled.
+ */
set_bit(__IGB_DOWN, &adapter->state);
del_timer_sync(&adapter->watchdog_timer);
del_timer_sync(&adapter->phy_info_timer);
- flush_scheduled_work();
+ cancel_work_sync(&adapter->reset_task);
+ cancel_work_sync(&adapter->watchdog_task);
#ifdef CONFIG_IGB_DCA
if (adapter->flags & IGB_FLAG_DCA_ENABLED) {