mirror of https://gitee.com/openkylin/linux.git
mac80211: prevent tuning during scanning
Postpone calling ieee80211_hw_config if hardware scanning is active. This is similar to solution for software scanning where channel setting is delayed until scan complete. Signed-off-by: Mohamed Abbas <mohamed.abbas@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
85249e5fab
commit
675ef586f0
|
@ -287,7 +287,7 @@ int ieee80211_set_freq(struct ieee80211_local *local, int freqMHz)
|
||||||
if (chan && !(chan->flags & IEEE80211_CHAN_DISABLED)) {
|
if (chan && !(chan->flags & IEEE80211_CHAN_DISABLED)) {
|
||||||
local->oper_channel = chan;
|
local->oper_channel = chan;
|
||||||
|
|
||||||
if (local->sta_sw_scanning)
|
if (local->sta_sw_scanning || local->sta_hw_scanning)
|
||||||
ret = 0;
|
ret = 0;
|
||||||
else
|
else
|
||||||
ret = ieee80211_hw_config(local);
|
ret = ieee80211_hw_config(local);
|
||||||
|
|
|
@ -3615,6 +3615,9 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw)
|
||||||
|
|
||||||
if (local->sta_hw_scanning) {
|
if (local->sta_hw_scanning) {
|
||||||
local->sta_hw_scanning = 0;
|
local->sta_hw_scanning = 0;
|
||||||
|
if (ieee80211_hw_config(local))
|
||||||
|
printk(KERN_DEBUG "%s: failed to restore operational "
|
||||||
|
"channel after scan\n", dev->name);
|
||||||
/* Restart STA timer for HW scan case */
|
/* Restart STA timer for HW scan case */
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
list_for_each_entry_rcu(sdata, &local->interfaces, list)
|
list_for_each_entry_rcu(sdata, &local->interfaces, list)
|
||||||
|
|
Loading…
Reference in New Issue