From: Ben Greear <greearb@xxxxxxxxxxxxxxx> If the work to be done is on the current active channel, then do not call the offchannel and return-to-channel logic. Signed-off-by: Ben Greear <greearb@xxxxxxxxxxxxxxx> --- v1 -> v2: Remove went_off_channel logic, and don't set tmp_channel if we're not going offchannel. :100644 100644 ae344d1... 8a2ff479.. M net/mac80211/work.c net/mac80211/work.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-) diff --git a/net/mac80211/work.c b/net/mac80211/work.c index ae344d1..8a2ff479 100644 --- a/net/mac80211/work.c +++ b/net/mac80211/work.c @@ -910,12 +910,17 @@ static void ieee80211_work_work(struct work_struct *work) * happen to be on the same channel as * the requested channel */ - ieee80211_offchannel_stop_beaconing(local); - ieee80211_offchannel_stop_station(local); - - local->tmp_channel = wk->chan; - local->tmp_channel_type = wk->chan_type; - ieee80211_hw_config(local, 0); + WARN_ON(local->scan_channel != NULL); + if (wk->chan != local->oper_channel || + wk->chan_type != local->_oper_channel_type) { + /* Only change channels if we need to */ + ieee80211_offchannel_stop_beaconing(local); + ieee80211_offchannel_stop_station(local); + + local->tmp_channel = wk->chan; + local->tmp_channel_type = wk->chan_type; + ieee80211_hw_config(local, 0); + } started = true; wk->timeout = jiffies; } -- 1.7.2.2 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html