summaryrefslogtreecommitdiffstats
path: root/net/mac80211/pm.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-07-14 16:48:54 +0200
committerJohn W. Linville <linville@tuxdriver.com>2011-07-15 13:39:42 -0400
commit94f9b97be5b3bf67392e43fb7f567721b09142c2 (patch)
tree4ffbf7480eeb60baf40f63070439f96e9a92c7e7 /net/mac80211/pm.c
parent3f29c522184ffb44fd475fdbe6083023ab1506f8 (diff)
downloadop-kernel-dev-94f9b97be5b3bf67392e43fb7f567721b09142c2.zip
op-kernel-dev-94f9b97be5b3bf67392e43fb7f567721b09142c2.tar.gz
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.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
index f87e993..6326d34 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) {
OpenPOWER on IntegriCloud