summaryrefslogtreecommitdiffstats
path: root/net/mac80211/pm.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2015-03-01 02:10:08 -0500
committerJohannes Berg <johannes.berg@intel.com>2015-03-04 04:34:09 -0500
commit23e370989c3fe6b9b2062d9d511feda800434de3 (patch)
treecb58fdb7dcf6ec7df71454233447446d322ee24c /net/mac80211/pm.c
parent8bb6f4b9c50eef838931e0e667f1a451f34a76ae (diff)
mac80211: start queues if driver rejected wowlan
If the driver rejects WoWLAN, restart the queues before returning to cfg80211. cfg80211 will return to mac80211, but not before it disconnects all interfaces. If we don't start the queues, any of the packets needed for disconnecting won't be transmitted, which is strange. Fix that. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/pm.c')
-rw-r--r--net/mac80211/pm.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
index 46ffe3ad7c46..ac6ad6238e3a 100644
--- a/net/mac80211/pm.c
+++ b/net/mac80211/pm.c
@@ -97,6 +97,13 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
97 return err; 97 return err;
98 } else if (err > 0) { 98 } else if (err > 0) {
99 WARN_ON(err != 1); 99 WARN_ON(err != 1);
100 /* cfg80211 will call back into mac80211 to disconnect
101 * all interfaces, allow that to proceed properly
102 */
103 ieee80211_wake_queues_by_reason(hw,
104 IEEE80211_MAX_QUEUE_MAP,
105 IEEE80211_QUEUE_STOP_REASON_SUSPEND,
106 false);
100 return err; 107 return err;
101 } else { 108 } else {
102 goto suspend; 109 goto suspend;