|
@@ -307,11 +307,15 @@ static void __ieee80211_scan_completed_finish(struct ieee80211_hw *hw,
|
|
mutex_lock(&local->mtx);
|
|
mutex_lock(&local->mtx);
|
|
on_oper_chan = ieee80211_cfg_on_oper_channel(local);
|
|
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 (was_hw_scan || !on_oper_chan) {
|
|
if (WARN_ON(local->scan_channel))
|
|
if (WARN_ON(local->scan_channel))
|
|
local->scan_channel = NULL;
|
|
local->scan_channel = NULL;
|
|
ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL);
|
|
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) {
|
|
if (!was_hw_scan) {
|
|
bool on_oper_chan2;
|
|
bool on_oper_chan2;
|
|
@@ -377,6 +381,9 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local)
|
|
|
|
|
|
ieee80211_configure_filter(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,
|
|
ieee80211_queue_delayed_work(&local->hw,
|
|
&local->scan_work,
|
|
&local->scan_work,
|
|
IEEE80211_CHANNEL_TIME);
|
|
IEEE80211_CHANNEL_TIME);
|