aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000e/netdev.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2010-12-12 10:45:14 -0500
committerTejun Heo <tj@kernel.org>2010-12-12 10:45:14 -0500
commit23f333a2bfafba80339315b724808982a9de57d9 (patch)
tree55819e6a8eeb9c2d34b42c77e7e38f7f6571baf9 /drivers/net/e1000e/netdev.c
parent6e07ebd84eef00be9e169a6d15a0bc20b06578fa (diff)
drivers/net: don't use flush_scheduled_work()
flush_scheduled_work() is on its way out. This patch contains simple conversions to replace flush_scheduled_work() usage with direct cancels and flushes. Directly cancel the used works on driver detach and flush them in other cases. The conversions are mostly straight forward and the only dangers are, * Forgetting to cancel/flush one or more used works. * Cancelling when a work should be flushed (ie. the work must be executed once scheduled whether the driver is detaching or not). I've gone over the changes multiple times but it would be much appreciated if you can review with the above points in mind. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: "David S. Miller" <davem@davemloft.net> Cc: Jay Cliburn <jcliburn@gmail.com> Cc: Michael Chan <mchan@broadcom.com> Cc: Divy Le Ray <divy@chelsio.com> Cc: e1000-devel@lists.sourceforge.net Cc: Vasanthy Kolluri <vkolluri@cisco.com> Cc: Samuel Ortiz <samuel@sortiz.org> Cc: Lennert Buytenhek <buytenh@wantstofly.org> Cc: Andrew Gallatin <gallatin@myri.com> Cc: Francois Romieu <romieu@fr.zoreil.com> Cc: Ramkrishna Vepa <ramkrishna.vepa@exar.com> Cc: Matt Carlson <mcarlson@broadcom.com> Cc: David Brownell <dbrownell@users.sourceforge.net> Cc: Shreyas Bhatewara <sbhatewara@vmware.com> Cc: netdev@vger.kernel.org
Diffstat (limited to 'drivers/net/e1000e/netdev.c')
-rw-r--r--drivers/net/e1000e/netdev.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index 5530d0bdd11a..02d093d1dd5c 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -6028,8 +6028,8 @@ static void __devexit e1000_remove(struct pci_dev *pdev)
6028 bool down = test_bit(__E1000_DOWN, &adapter->state); 6028 bool down = test_bit(__E1000_DOWN, &adapter->state);
6029 6029
6030 /* 6030 /*
6031 * flush_scheduled work may reschedule our watchdog task, so 6031 * The timers may be rescheduled, so explicitly disable them
6032 * explicitly disable watchdog tasks from being rescheduled 6032 * from being rescheduled.
6033 */ 6033 */
6034 if (!down) 6034 if (!down)
6035 set_bit(__E1000_DOWN, &adapter->state); 6035 set_bit(__E1000_DOWN, &adapter->state);
@@ -6040,8 +6040,8 @@ static void __devexit e1000_remove(struct pci_dev *pdev)
6040 cancel_work_sync(&adapter->watchdog_task); 6040 cancel_work_sync(&adapter->watchdog_task);
6041 cancel_work_sync(&adapter->downshift_task); 6041 cancel_work_sync(&adapter->downshift_task);
6042 cancel_work_sync(&adapter->update_phy_task); 6042 cancel_work_sync(&adapter->update_phy_task);
6043 cancel_work_sync(&adapter->led_blink_task);
6043 cancel_work_sync(&adapter->print_hang_task); 6044 cancel_work_sync(&adapter->print_hang_task);
6044 flush_scheduled_work();
6045 6045
6046 if (!(netdev->flags & IFF_UP)) 6046 if (!(netdev->flags & IFF_UP))
6047 e1000_power_down_phy(adapter); 6047 e1000_power_down_phy(adapter);