mac80211: add basic support for WoWLAN
This adds basic support for the new WoWLAN configuration in mac80211. The behaviour is completely offloaded to the driver though, with two new callbacks (suspend/resume). Options for the driver include a complete reconfiguration after wakeup, and exposing all the triggers it wants to support. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
ff1b6e69ad
commit
eecc48000a
9 changed files with 97 additions and 5 deletions
|
@ -1125,9 +1125,27 @@ int ieee80211_reconfig(struct ieee80211_local *local)
|
|||
struct sta_info *sta;
|
||||
int res;
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
if (local->suspended)
|
||||
local->resuming = true;
|
||||
|
||||
if (local->wowlan) {
|
||||
local->wowlan = false;
|
||||
res = drv_resume(local);
|
||||
if (res < 0) {
|
||||
local->resuming = false;
|
||||
return res;
|
||||
}
|
||||
if (res == 0)
|
||||
goto wake_up;
|
||||
WARN_ON(res > 1);
|
||||
/*
|
||||
* res is 1, which means the driver requested
|
||||
* to go through a regular reset on wakeup.
|
||||
*/
|
||||
}
|
||||
#endif
|
||||
|
||||
/* restart hardware */
|
||||
if (local->open_count) {
|
||||
/*
|
||||
|
@ -1258,6 +1276,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
|
|||
if (ieee80211_sdata_running(sdata))
|
||||
ieee80211_enable_keys(sdata);
|
||||
|
||||
wake_up:
|
||||
ieee80211_wake_queues_by_reason(hw,
|
||||
IEEE80211_QUEUE_STOP_REASON_SUSPEND);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue