diff options
Diffstat (limited to 'net/mac80211/pm.c')
-rw-r--r-- | net/mac80211/pm.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c index af1c4e26e965..5c572e7a1a71 100644 --- a/net/mac80211/pm.c +++ b/net/mac80211/pm.c | |||
@@ -77,6 +77,17 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) | |||
77 | int err = drv_suspend(local, wowlan); | 77 | int err = drv_suspend(local, wowlan); |
78 | if (err < 0) { | 78 | if (err < 0) { |
79 | local->quiescing = false; | 79 | local->quiescing = false; |
80 | local->wowlan = false; | ||
81 | if (hw->flags & IEEE80211_HW_AMPDU_AGGREGATION) { | ||
82 | mutex_lock(&local->sta_mtx); | ||
83 | list_for_each_entry(sta, | ||
84 | &local->sta_list, list) { | ||
85 | clear_sta_flag(sta, WLAN_STA_BLOCK_BA); | ||
86 | } | ||
87 | mutex_unlock(&local->sta_mtx); | ||
88 | } | ||
89 | ieee80211_wake_queues_by_reason(hw, | ||
90 | IEEE80211_QUEUE_STOP_REASON_SUSPEND); | ||
80 | return err; | 91 | return err; |
81 | } else if (err > 0) { | 92 | } else if (err > 0) { |
82 | WARN_ON(err != 1); | 93 | WARN_ON(err != 1); |