diff options
author | Johannes Berg <johannes.berg@intel.com> | 2011-07-14 16:48:54 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-07-15 13:39:42 -0400 |
commit | 94f9b97be5b3bf67392e43fb7f567721b09142c2 (patch) | |
tree | 4ffbf7480eeb60baf40f63070439f96e9a92c7e7 /net/mac80211/pm.c | |
parent | 3f29c522184ffb44fd475fdbe6083023ab1506f8 (diff) | |
download | linux-94f9b97be5b3bf67392e43fb7f567721b09142c2.tar.gz linux-94f9b97be5b3bf67392e43fb7f567721b09142c2.tar.bz2 linux-94f9b97be5b3bf67392e43fb7f567721b09142c2.zip |
mac80211: be more careful in suspend/resume
When suspending with all netdevs down, the device
is stopped but we still call a number of driver
callbacks that the driver might not expect. The
same happens during resume, we might call a few
callbacks without starting the driver. Fix this
by checking open_count around more things and
exiting quickly if it is 0.
Also, while at this I noticed that the coverage
class isn't reprogrammed after resume, so add
that.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/pm.c')
-rw-r--r-- | net/mac80211/pm.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c index f87e993e713b..6326d3439861 100644 --- a/net/mac80211/pm.c +++ b/net/mac80211/pm.c @@ -34,6 +34,9 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) struct ieee80211_sub_if_data *sdata; struct sta_info *sta; + if (!local->open_count) + goto suspend; + ieee80211_scan_cancel(local); if (hw->flags & IEEE80211_HW_AMPDU_AGGREGATION) { |