diff options
Diffstat (limited to 'net/mac80211/util.c')
| -rw-r--r-- | net/mac80211/util.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 72e6292955b..180c23a86b9 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c @@ -1446,6 +1446,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) struct ieee80211_hw *hw = &local->hw; struct ieee80211_sub_if_data *sdata; struct ieee80211_chanctx *ctx; + struct cfg80211_sched_scan_request *sched_scan_req; struct sta_info *sta; int res, i; bool reconfig_due_to_wowlan = false; @@ -1692,6 +1693,22 @@ int ieee80211_reconfig(struct ieee80211_local *local) if (ieee80211_sdata_running(sdata)) ieee80211_enable_keys(sdata); + mutex_lock(&local->mtx); + sdata = rtnl_dereference(local->sched_scan_sdata); + if (sdata) { + if (sdata->sched_scan_stop_pending) { + ieee80211_sched_scan_stopped(&local->hw); + } else { + sched_scan_req = cfg80211_current_sched_scan_request( + local->hw.wiphy); + /* if sched_scan request is still available */ + if (sched_scan_req) + drv_sched_scan_start(local, sdata, + sched_scan_req, + &sdata->sched_scan_ies); + } + } + mutex_unlock(&local->mtx); wake_up: local->in_reconfig = false; barrier(); |