+++ /dev/null
-Don't do broadcast SSID scans, if all configured SSIDs use scan_ssid=1. Improves background scanning in supplicant-managed roaming.
-
---- a/wpa_supplicant/scan.c
-+++ b/wpa_supplicant/scan.c
-@@ -73,6 +73,7 @@ static void wpa_supplicant_scan(void *el
- struct wpabuf *wps_ie = NULL;
- const u8 *extra_ie = NULL;
- size_t extra_ie_len = 0;
-+ int scan_ssid_all = 1;
- int wps = 0;
- #ifdef CONFIG_WPS
- enum wps_request_type req_type = WPS_REQ_ENROLLEE_INFO;
-@@ -82,6 +83,17 @@ static void wpa_supplicant_scan(void *el
- return;
-
- enabled = 0;
-+
-+ /* 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;
-+ }
-+
- ssid = wpa_s->conf->ssid;
- while (ssid) {
- if (!ssid->disabled) {
-@@ -154,6 +166,10 @@ static void wpa_supplicant_scan(void *el
- return;
- }
-
-+ if (scan_ssid_all && !ssid) {
-+ ssid = wpa_s->conf->ssid;
-+ }
-+
- wpa_printf(MSG_DEBUG, "Starting AP scan (%s SSID)",
- ssid ? "specific": "broadcast");
- if (ssid) {