From 8c956f6d094718ec387ca0aaa851d4aa1bffd065 Mon Sep 17 00:00:00 2001 From: Seth Forshee Date: Mon, 11 Feb 2013 11:21:08 -0600 Subject: [PATCH] --- yaml --- r: 352665 b: refs/heads/master c: 9c35d7d2368f54313b988a01c408e5cf863ffd9e h: refs/heads/master i: 352663: 88fee37ae3825be899abfd18a722356eef80d72c v: v3 --- [refs] | 2 +- trunk/net/mac80211/offchannel.c | 5 +++++ trunk/net/mac80211/scan.c | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index a291544666d1..1b0397e1a007 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6c17b77b67587b9f9e3070fb89fe98cef3187131 +refs/heads/master: 9c35d7d2368f54313b988a01c408e5cf863ffd9e diff --git a/trunk/net/mac80211/offchannel.c b/trunk/net/mac80211/offchannel.c index 4c3ee3e8285c..cc79b4a2e821 100644 --- a/trunk/net/mac80211/offchannel.c +++ b/trunk/net/mac80211/offchannel.c @@ -114,8 +114,13 @@ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local) * STA interfaces. */ + /* + * Stop queues and transmit all frames queued by the driver + * before sending nullfunc to enable powersave at the AP. + */ ieee80211_stop_queues_by_reason(&local->hw, IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL); + drv_flush(local, false); mutex_lock(&local->iflist_mtx); list_for_each_entry(sdata, &local->interfaces, list) { diff --git a/trunk/net/mac80211/scan.c b/trunk/net/mac80211/scan.c index d9e2df96f676..6d0b89e4aa31 100644 --- a/trunk/net/mac80211/scan.c +++ b/trunk/net/mac80211/scan.c @@ -334,6 +334,9 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local) ieee80211_offchannel_stop_vifs(local); + /* ensure nullfunc is transmitted before leaving operating channel */ + drv_flush(local, false); + ieee80211_configure_filter(local); /* We need to set power level at maximum rate for scanning. */