diff options
author | Arik Nemtsov <arik@wizery.com> | 2014-02-11 12:27:19 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2014-02-11 12:59:12 +0100 |
commit | 32769814d54a5a360b83811b4039c776ec953c71 (patch) | |
tree | ab0245a4935cd6116a6c671c3a0dd085b56f4d44 | |
parent | fab57a6cc227468ca9e6a4c7ff8d3b10727785ee (diff) | |
download | op-kernel-dev-32769814d54a5a360b83811b4039c776ec953c71.zip op-kernel-dev-32769814d54a5a360b83811b4039c776ec953c71.tar.gz |
mac80211: fix sched_scan restart on recovery
In case we were not suspended, the reconfig function returns without
configuring the scheduled scan.
Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r-- | net/mac80211/util.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 676dc09..1d1bb70 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c @@ -1741,6 +1741,26 @@ int ieee80211_reconfig(struct ieee80211_local *local) IEEE80211_QUEUE_STOP_REASON_SUSPEND); /* + * Reconfigure sched scan if it was interrupted by FW restart or + * suspend. + */ + mutex_lock(&local->mtx); + sched_scan_sdata = rcu_dereference_protected(local->sched_scan_sdata, + lockdep_is_held(&local->mtx)); + if (sched_scan_sdata && local->sched_scan_req) + /* + * Sched scan stopped, but we don't want to report it. Instead, + * we're trying to reschedule. + */ + if (__ieee80211_request_sched_scan_start(sched_scan_sdata, + local->sched_scan_req)) + sched_scan_stopped = true; + mutex_unlock(&local->mtx); + + if (sched_scan_stopped) + cfg80211_sched_scan_stopped(local->hw.wiphy); + + /* * If this is for hw restart things are still running. * We may want to change that later, however. */ @@ -1768,26 +1788,6 @@ int ieee80211_reconfig(struct ieee80211_local *local) WARN_ON(1); #endif - /* - * Reconfigure sched scan if it was interrupted by FW restart or - * suspend. - */ - mutex_lock(&local->mtx); - sched_scan_sdata = rcu_dereference_protected(local->sched_scan_sdata, - lockdep_is_held(&local->mtx)); - if (sched_scan_sdata && local->sched_scan_req) - /* - * Sched scan stopped, but we don't want to report it. Instead, - * we're trying to reschedule. - */ - if (__ieee80211_request_sched_scan_start(sched_scan_sdata, - local->sched_scan_req)) - sched_scan_stopped = true; - mutex_unlock(&local->mtx); - - if (sched_scan_stopped) - cfg80211_sched_scan_stopped(local->hw.wiphy); - return 0; } |