* Start a new sched scan to continue searching for more SSIDs
* either if timed out or PNO schedule scan is pending.
*/
- if (wpa_s->sched_scan_timed_out || wpa_s->pno_sched_pending) {
-
- if (wpa_supplicant_req_sched_scan(wpa_s) < 0 &&
- wpa_s->pno_sched_pending) {
- wpa_msg(wpa_s, MSG_ERROR, "Failed to schedule PNO");
- } else if (wpa_s->pno_sched_pending) {
- wpa_s->pno_sched_pending = 0;
- wpa_s->pno = 1;
- }
+ if (wpa_s->sched_scan_timed_out) {
+ wpa_supplicant_req_sched_scan(wpa_s);
+ } else if (wpa_s->pno_sched_pending) {
+ wpa_s->pno_sched_pending = 0;
+ wpas_start_pno(wpa_s);
}
break;
struct wpa_ssid *ssid;
struct wpa_driver_scan_params params;
+ if (!wpa_s->sched_scan_supported)
+ return -1;
+
if (wpa_s->pno || wpa_s->pno_sched_pending)
return 0;
os_free(params.filter_ssids);
if (ret == 0)
wpa_s->pno = 1;
+ else
+ wpa_msg(wpa_s, MSG_ERROR, "Failed to schedule PNO");
return ret;
}
{
int ret = 0;
- if (wpa_s->pno || wpa_s->sched_scanning) {
- wpa_s->pno = 0;
- ret = wpa_supplicant_stop_sched_scan(wpa_s);
- }
+ if (!wpa_s->pno)
+ return 0;
+
+ ret = wpa_supplicant_stop_sched_scan(wpa_s);
+ wpa_s->pno = 0;
wpa_s->pno_sched_pending = 0;
if (wpa_s->wpa_state == WPA_SCANNING)