#ifndef CONFIG_NO_SCAN_PROCESSING
static int wpas_select_network_from_last_scan(struct wpa_supplicant *wpa_s,
- int new_scan);
+ int new_scan, int own_request);
#endif /* CONFIG_NO_SCAN_PROCESSING */
wpa_scan_results_free(scan_res);
- return wpas_select_network_from_last_scan(wpa_s, 1);
+ return wpas_select_network_from_last_scan(wpa_s, 1, own_request);
}
static int wpas_select_network_from_last_scan(struct wpa_supplicant *wpa_s,
- int new_scan)
+ int new_scan, int own_request)
{
struct wpa_bss *selected;
struct wpa_ssid *ssid = NULL;
wpa_supplicant_associate(wpa_s, NULL, ssid);
if (new_scan)
wpa_supplicant_rsn_preauth_scan_results(wpa_s);
- } else {
+ } else if (own_request) {
+ /*
+ * No SSID found. If SCAN results are as a result of
+ * own scan request and not due to a scan request on
+ * another shared interface, try another scan.
+ */
int timeout_sec = wpa_s->scan_interval;
int timeout_usec = 0;
#ifdef CONFIG_P2P
return -1;
}
- return wpas_select_network_from_last_scan(wpa_s, 0);
+ return wpas_select_network_from_last_scan(wpa_s, 0, 1);
#endif /* CONFIG_NO_SCAN_PROCESSING */
}