diff options
Diffstat (limited to 'net/mac80211/util.c')
-rw-r--r-- | net/mac80211/util.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 3943d4bf289c..58f58bd5202f 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -2043,16 +2043,26 @@ int ieee80211_reconfig(struct ieee80211_local *local) | |||
2043 | */ | 2043 | */ |
2044 | if (sched_scan_req->n_scan_plans > 1 || | 2044 | if (sched_scan_req->n_scan_plans > 1 || |
2045 | __ieee80211_request_sched_scan_start(sched_scan_sdata, | 2045 | __ieee80211_request_sched_scan_start(sched_scan_sdata, |
2046 | sched_scan_req)) | 2046 | sched_scan_req)) { |
2047 | RCU_INIT_POINTER(local->sched_scan_sdata, NULL); | ||
2048 | RCU_INIT_POINTER(local->sched_scan_req, NULL); | ||
2047 | sched_scan_stopped = true; | 2049 | sched_scan_stopped = true; |
2050 | } | ||
2048 | mutex_unlock(&local->mtx); | 2051 | mutex_unlock(&local->mtx); |
2049 | 2052 | ||
2050 | if (sched_scan_stopped) | 2053 | if (sched_scan_stopped) |
2051 | cfg80211_sched_scan_stopped_rtnl(local->hw.wiphy); | 2054 | cfg80211_sched_scan_stopped_rtnl(local->hw.wiphy); |
2052 | 2055 | ||
2053 | wake_up: | 2056 | wake_up: |
2054 | local->in_reconfig = false; | 2057 | if (local->in_reconfig) { |
2055 | barrier(); | 2058 | local->in_reconfig = false; |
2059 | barrier(); | ||
2060 | |||
2061 | /* Restart deferred ROCs */ | ||
2062 | mutex_lock(&local->mtx); | ||
2063 | ieee80211_start_next_roc(local); | ||
2064 | mutex_unlock(&local->mtx); | ||
2065 | } | ||
2056 | 2066 | ||
2057 | if (local->monitors == local->open_count && local->monitors > 0) | 2067 | if (local->monitors == local->open_count && local->monitors > 0) |
2058 | ieee80211_add_virtual_monitor(local); | 2068 | ieee80211_add_virtual_monitor(local); |