|
@@ -78,6 +78,16 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
|
|
|
if (err < 0) {
|
|
|
local->quiescing = false;
|
|
|
local->wowlan = false;
|
|
|
+ if (hw->flags & IEEE80211_HW_AMPDU_AGGREGATION) {
|
|
|
+ mutex_lock(&local->sta_mtx);
|
|
|
+ list_for_each_entry(sta,
|
|
|
+ &local->sta_list, list) {
|
|
|
+ clear_sta_flag(sta, WLAN_STA_BLOCK_BA);
|
|
|
+ }
|
|
|
+ mutex_unlock(&local->sta_mtx);
|
|
|
+ }
|
|
|
+ ieee80211_wake_queues_by_reason(hw,
|
|
|
+ IEEE80211_QUEUE_STOP_REASON_SUSPEND);
|
|
|
return err;
|
|
|
} else if (err > 0) {
|
|
|
WARN_ON(err != 1);
|