diff options
Diffstat (limited to 'package/hostapd/patches/300-scan_ssid.patch')
| -rw-r--r-- | package/hostapd/patches/300-scan_ssid.patch | 37 | 
1 files changed, 37 insertions, 0 deletions
| diff --git a/package/hostapd/patches/300-scan_ssid.patch b/package/hostapd/patches/300-scan_ssid.patch new file mode 100644 index 000000000..296690fb0 --- /dev/null +++ b/package/hostapd/patches/300-scan_ssid.patch @@ -0,0 +1,37 @@ +--- a/wpa_supplicant/scan.c ++++ b/wpa_supplicant/scan.c +@@ -250,6 +250,7 @@ static void wpa_supplicant_scan(void *el + 	enum wps_request_type req_type = WPS_REQ_ENROLLEE_INFO; + #endif /* CONFIG_WPS */ + 	struct wpa_driver_scan_params params; ++	int scan_ssid_all = 1; + 	size_t max_ssids; + 	enum wpa_states prev_state; +  +@@ -306,6 +307,16 @@ static void wpa_supplicant_scan(void *el + 	    wpa_s->wpa_state == WPA_INACTIVE) + 		wpa_supplicant_set_state(wpa_s, WPA_SCANNING); +  ++	/* 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) { +@@ -369,6 +380,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) { | 
