]> rtime.felk.cvut.cz Git - lisovros/linux_canprio.git/commitdiff
Revert "mac80211: fix sw scan bracketing"
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Tue, 27 Jul 2010 20:33:08 +0000 (16:33 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 28 Jul 2010 20:24:02 +0000 (16:24 -0400)
This reverts this commit. While in theory the change is
correct the patch does not address current assumptions made
by some drivers, one which is definitley affected is ath9k.

Prior to this change the scan complete callback would be
called after we returned to the home channel and configured
the hardware RX filters. After this change we call the scan
complete callback prior to both the hw config and the config
filter. At least for ath9k this breaks quite a few assumptions
on the callback, leading to disconnects to the AP after every scan
making the driver pretty useless on STA mode. The goal behind
this commit was to address the now understood spurious warnings
from ath9k and mac80211_hwsim on scanning on two wiphys at the
same time but we have now supressed these and will address this
issue in the next kernel release.

When fixing this for good next we must first review the other
driver's dependence on this logic and perhaps consider removal
of the scan complete callback all together.

Cc: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/scan.c

index 439c98d93a79cedee816fa34e1fc7e5069d2e5f5..41635b2c91bfc23fdb6b8523364aee3b4c57c832 100644 (file)
@@ -286,8 +286,6 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted)
        local->scanning = 0;
        local->scan_channel = NULL;
 
-       drv_sw_scan_complete(local);
-
        /* we only have to protect scan_req and hw/sw scan */
        mutex_unlock(&local->scan_mtx);
 
@@ -297,6 +295,8 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted)
 
        ieee80211_configure_filter(local);
 
+       drv_sw_scan_complete(local);
+
        ieee80211_offchannel_return(local, true);
 
  done: