diff options
author | Johannes Berg <johannes.berg@intel.com> | 2011-07-01 18:02:01 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-07-05 15:26:56 -0400 |
commit | 2b4562dfd6ad3579951de21168cb9d266ed3f1bd (patch) | |
tree | 38b43f58644fc02ffeb0930009b979542362ea88 /net/mac80211/pm.c | |
parent | 304e21bbeab0d208dc7e6142fb75db8a466d5217 (diff) |
mac80211: allow driver to impose WoWLAN restrictions
If the driver can't support WoWLAN in the current
state, this patch allows it to return 1 from the
suspend callback to do the normal deconfiguration
instead of using suspend/resume calls. Note that
if it does this, resume won't be called.
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 | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c index 67839eb90cc1..f87e993e713b 100644 --- a/net/mac80211/pm.c +++ b/net/mac80211/pm.c | |||
@@ -72,15 +72,19 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) | |||
72 | local->wowlan = wowlan && local->open_count; | 72 | local->wowlan = wowlan && local->open_count; |
73 | if (local->wowlan) { | 73 | if (local->wowlan) { |
74 | int err = drv_suspend(local, wowlan); | 74 | int err = drv_suspend(local, wowlan); |
75 | if (err) { | 75 | if (err < 0) { |
76 | local->quiescing = false; | 76 | local->quiescing = false; |
77 | return err; | 77 | return err; |
78 | } else if (err > 0) { | ||
79 | WARN_ON(err != 1); | ||
80 | local->wowlan = false; | ||
81 | } else { | ||
82 | list_for_each_entry(sdata, &local->interfaces, list) { | ||
83 | cancel_work_sync(&sdata->work); | ||
84 | ieee80211_quiesce(sdata); | ||
85 | } | ||
86 | goto suspend; | ||
78 | } | 87 | } |
79 | list_for_each_entry(sdata, &local->interfaces, list) { | ||
80 | cancel_work_sync(&sdata->work); | ||
81 | ieee80211_quiesce(sdata); | ||
82 | } | ||
83 | goto suspend; | ||
84 | } | 88 | } |
85 | 89 | ||
86 | /* disable keys */ | 90 | /* disable keys */ |