diff options
author | Tejun Heo <tj@kernel.org> | 2010-12-12 10:45:14 -0500 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2010-12-12 10:45:14 -0500 |
commit | 760141a53e5d72d4cc1d8c6e2a0232a24bedb36b (patch) | |
tree | 662158c0c23ee16e2bc16d9ba53eeadc6d9fa17e /drivers/net/ixgbe/ixgbe_main.c | |
parent | 9beb4896cec71e40738a7752072174fbf0d5b7b4 (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/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 8af0fc05169..ca9036de49f 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -7373,13 +7373,15 @@ static void __devexit ixgbe_remove(struct pci_dev *pdev) | |||
7373 | struct net_device *netdev = adapter->netdev; | 7373 | struct net_device *netdev = adapter->netdev; |
7374 | 7374 | ||
7375 | set_bit(__IXGBE_DOWN, &adapter->state); | 7375 | set_bit(__IXGBE_DOWN, &adapter->state); |
7376 | /* clear the module not found bit to make sure the worker won't | 7376 | |
7377 | * reschedule | 7377 | /* |
7378 | * The timers may be rescheduled, so explicitly disable them | ||
7379 | * from being rescheduled. | ||
7378 | */ | 7380 | */ |
7379 | clear_bit(__IXGBE_SFP_MODULE_NOT_FOUND, &adapter->state); | 7381 | clear_bit(__IXGBE_SFP_MODULE_NOT_FOUND, &adapter->state); |
7380 | del_timer_sync(&adapter->watchdog_timer); | 7382 | del_timer_sync(&adapter->watchdog_timer); |
7381 | |||
7382 | del_timer_sync(&adapter->sfp_timer); | 7383 | del_timer_sync(&adapter->sfp_timer); |
7384 | |||
7383 | cancel_work_sync(&adapter->watchdog_task); | 7385 | cancel_work_sync(&adapter->watchdog_task); |
7384 | cancel_work_sync(&adapter->sfp_task); | 7386 | cancel_work_sync(&adapter->sfp_task); |
7385 | cancel_work_sync(&adapter->multispeed_fiber_task); | 7387 | cancel_work_sync(&adapter->multispeed_fiber_task); |
@@ -7387,7 +7389,8 @@ static void __devexit ixgbe_remove(struct pci_dev *pdev) | |||
7387 | if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE || | 7389 | if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE || |
7388 | adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE) | 7390 | adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE) |
7389 | cancel_work_sync(&adapter->fdir_reinit_task); | 7391 | cancel_work_sync(&adapter->fdir_reinit_task); |
7390 | flush_scheduled_work(); | 7392 | if (adapter->flags2 & IXGBE_FLAG2_TEMP_SENSOR_CAPABLE) |
7393 | cancel_work_sync(&adapter->check_overtemp_task); | ||
7391 | 7394 | ||
7392 | #ifdef CONFIG_IXGBE_DCA | 7395 | #ifdef CONFIG_IXGBE_DCA |
7393 | if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) { | 7396 | if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) { |