blob: 2309d1cd6531a1b36d82f62a0463a0f19e4a1462 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
--- a/wpa_supplicant/scan.c
+++ b/wpa_supplicant/scan.c
@@ -423,6 +423,7 @@ static void wpa_supplicant_scan(void *el
int scan_req = 0, ret;
struct wpabuf *extra_ie;
struct wpa_driver_scan_params params;
+ int scan_ssid_all = 1;
size_t max_ssids;
enum wpa_states prev_state;
@@ -502,6 +503,16 @@ static void wpa_supplicant_scan(void *el
}
}
+ /* check if all configured ssids should be scanned directly */
+ ssid = wpa_s->conf->ssid;
+ while (ssid) {
+ if (!ssid->scan_ssid) {
+ scan_ssid_all = 0;
+ break;
+ }
+ ssid = ssid->next;
+ }
+
/* Find the starting point from which to continue scanning */
ssid = wpa_s->conf->ssid;
if (wpa_s->prev_scan_ssid != WILDCARD_SSID_SCAN) {
@@ -564,6 +575,9 @@ static void wpa_supplicant_scan(void *el
int_array_sort_unique(params.freqs);
}
+ if (scan_ssid_all && !ssid)
+ ssid = wpa_s->conf->ssid;
+
if (ssid) {
wpa_s->prev_scan_ssid = ssid;
if (max_ssids > 1) {
|