mac80211: Ensure power-level set properly for scanning.
My previous patch to optimize scanning on operating channel accidentally removed the code that would ensure power was set to maximum for scanning. This patch re-adds that functionality. Signed-off-by: Ben Greear <greearb@candelatech.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
603b3eefb9
commit
59bdf3b0fe
@ -199,7 +199,8 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
|
||||
changed |= IEEE80211_CONF_CHANGE_SMPS;
|
||||
}
|
||||
|
||||
if (scan_chan)
|
||||
if ((local->scanning & SCAN_SW_SCANNING) ||
|
||||
(local->scanning & SCAN_HW_SCANNING))
|
||||
power = chan->max_power;
|
||||
else
|
||||
power = local->power_constr_level ?
|
||||
|
@ -307,11 +307,15 @@ static void __ieee80211_scan_completed_finish(struct ieee80211_hw *hw,
|
||||
mutex_lock(&local->mtx);
|
||||
on_oper_chan = ieee80211_cfg_on_oper_channel(local);
|
||||
|
||||
WARN_ON(local->scanning & (SCAN_SW_SCANNING | SCAN_HW_SCANNING));
|
||||
|
||||
if (was_hw_scan || !on_oper_chan) {
|
||||
if (WARN_ON(local->scan_channel))
|
||||
local->scan_channel = NULL;
|
||||
ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL);
|
||||
}
|
||||
} else
|
||||
/* Set power back to normal operating levels. */
|
||||
ieee80211_hw_config(local, 0);
|
||||
|
||||
if (!was_hw_scan) {
|
||||
bool on_oper_chan2;
|
||||
@ -377,6 +381,9 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local)
|
||||
|
||||
ieee80211_configure_filter(local);
|
||||
|
||||
/* We need to set power level at maximum rate for scanning. */
|
||||
ieee80211_hw_config(local, 0);
|
||||
|
||||
ieee80211_queue_delayed_work(&local->hw,
|
||||
&local->scan_work,
|
||||
IEEE80211_CHANNEL_TIME);
|
||||
|
Loading…
Reference in New Issue
Block a user