diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-08-25 08:04:27 (GMT) |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-08-25 08:04:32 (GMT) |
commit | daedc71836e5a398fd0cc0e12c5cb43539478485 (patch) | |
tree | c56567a92017679e57195cef992d4a5561c20e0e /net/mac80211/pm.c | |
parent | c36ba80ea01d0aecb652c26799a912e760ce8981 (diff) | |
parent | 422bef879e84104fee6dc68ded0e371dbeb5f88e (diff) | |
download | linux-fsl-qoriq-daedc71836e5a398fd0cc0e12c5cb43539478485.tar.xz |
Merge commit 'v2.6.31-rc7' into irq/core
Merge reason: move from an -rc2 base to -rc7.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'net/mac80211/pm.c')
-rw-r--r-- | net/mac80211/pm.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c index 7a549f9..5e3d476 100644 --- a/net/mac80211/pm.c +++ b/net/mac80211/pm.c @@ -55,15 +55,6 @@ int __ieee80211_suspend(struct ieee80211_hw *hw) rcu_read_unlock(); - /* flush again, in case driver queued work */ - flush_workqueue(local->hw.workqueue); - - /* stop hardware - this must stop RX */ - if (local->open_count) { - ieee80211_led_radio(local, false); - drv_stop(local); - } - /* remove STAs */ spin_lock_irqsave(&local->sta_lock, flags); list_for_each_entry(sta, &local->sta_list, list) { @@ -111,7 +102,22 @@ int __ieee80211_suspend(struct ieee80211_hw *hw) drv_remove_interface(local, &conf); } + /* stop hardware - this must stop RX */ + if (local->open_count) { + ieee80211_led_radio(local, false); + drv_stop(local); + } + + /* + * flush again, in case driver queued work -- it + * shouldn't be doing (or cancel everything in the + * stop callback) that but better safe than sorry. + */ + flush_workqueue(local->hw.workqueue); + local->suspended = true; + /* need suspended to be visible before quiescing is false */ + barrier(); local->quiescing = false; return 0; |