X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=net%2Fmac80211%2Futil.c;h=74dd4d72b2332281f0ee3e73138b8fec3a53e380;hb=dec7730df6ef78ab01b6e96e0f4e6a94d96f1a86;hp=f1e5b76eda708b86ae4a35bbd225a2eeac141593;hpb=94106d26c380ce21f947a37a8a0c18a1c29b40af;p=karo-tx-linux.git diff --git a/net/mac80211/util.c b/net/mac80211/util.c index f1e5b76eda70..74dd4d72b233 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c @@ -2046,16 +2046,26 @@ int ieee80211_reconfig(struct ieee80211_local *local) */ if (sched_scan_req->n_scan_plans > 1 || __ieee80211_request_sched_scan_start(sched_scan_sdata, - sched_scan_req)) + sched_scan_req)) { + RCU_INIT_POINTER(local->sched_scan_sdata, NULL); + RCU_INIT_POINTER(local->sched_scan_req, NULL); sched_scan_stopped = true; + } mutex_unlock(&local->mtx); if (sched_scan_stopped) cfg80211_sched_scan_stopped_rtnl(local->hw.wiphy); wake_up: - local->in_reconfig = false; - barrier(); + if (local->in_reconfig) { + local->in_reconfig = false; + barrier(); + + /* Restart deferred ROCs */ + mutex_lock(&local->mtx); + ieee80211_start_next_roc(local); + mutex_unlock(&local->mtx); + } if (local->monitors == local->open_count && local->monitors > 0) ieee80211_add_virtual_monitor(local);