diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/offchannel.c | 5 | ||||
-rw-r--r-- | net/mac80211/scan.c | 3 |
2 files changed, 8 insertions, 0 deletions
diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c index 4c3ee3e8285c..cc79b4a2e821 100644 --- a/net/mac80211/offchannel.c +++ b/net/mac80211/offchannel.c | |||
@@ -114,8 +114,13 @@ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local) | |||
114 | * STA interfaces. | 114 | * STA interfaces. |
115 | */ | 115 | */ |
116 | 116 | ||
117 | /* | ||
118 | * Stop queues and transmit all frames queued by the driver | ||
119 | * before sending nullfunc to enable powersave at the AP. | ||
120 | */ | ||
117 | ieee80211_stop_queues_by_reason(&local->hw, | 121 | ieee80211_stop_queues_by_reason(&local->hw, |
118 | IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL); | 122 | IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL); |
123 | drv_flush(local, false); | ||
119 | 124 | ||
120 | mutex_lock(&local->iflist_mtx); | 125 | mutex_lock(&local->iflist_mtx); |
121 | list_for_each_entry(sdata, &local->interfaces, list) { | 126 | list_for_each_entry(sdata, &local->interfaces, list) { |
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c index d9e2df96f676..6d0b89e4aa31 100644 --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c | |||
@@ -334,6 +334,9 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local) | |||
334 | 334 | ||
335 | ieee80211_offchannel_stop_vifs(local); | 335 | ieee80211_offchannel_stop_vifs(local); |
336 | 336 | ||
337 | /* ensure nullfunc is transmitted before leaving operating channel */ | ||
338 | drv_flush(local, false); | ||
339 | |||
337 | ieee80211_configure_filter(local); | 340 | ieee80211_configure_filter(local); |
338 | 341 | ||
339 | /* We need to set power level at maximum rate for scanning. */ | 342 | /* We need to set power level at maximum rate for scanning. */ |