Fix needed for wpa_supplicant. It might not be the best fix.
[madwifi/.git] / net80211 / ieee80211_scan.c
index 8d9aca4f0ee251f67f89f3c4f118fa363cef6614..c3d6418a32c04f920929e93e89296d619072d48c 100644 (file)
@@ -430,6 +430,19 @@ ieee80211_start_scan(struct ieee80211vap *vap, int flags, u_int duration,
                IEEE80211_DPRINTF(vap, IEEE80211_MSG_SCAN,
                        "%s: %s scan already in progress\n", __func__,
                        ss->ss_flags & IEEE80211_SCAN_ACTIVE ? "active" : "passive");
+
+               /* If the running scanning has the flag SCAN_NOPICK set, but
+                * the requested scan has not, then we update the running scan
+                * flag. This is needed when wpa_supplicant is used with
+                * ap_scan=1. Without it, the driver will never associate. */
+
+               if (((flags & IEEE80211_SCAN_NOPICK) == 0)
+                   && (ss->ss_flags & IEEE80211_SCAN_NOPICK)) {
+                       IEEE80211_DPRINTF(vap, IEEE80211_MSG_SCAN,
+                                         "%s: clearing SCAN_NOPICK flag\n",
+                                         __func__);
+                       ss->ss_flags &= ~IEEE80211_SCAN_NOPICK;
+               }
        }
        
        scanning = (ic->ic_flags & IEEE80211_F_SCAN);