Fix PNO restart flow
PNO is sometimes restarted due to changes in scan parameters (e.g., selected network changed or MAC randomization being enabled/disabled). Restart is done by stopping PNO and immediately starting it again. This may result in the SCHED_SCAN_STOPPED event being received after the request for new PNO, which will make wpa_supplicant believe PNO is not active although it is actually is. As a result, the next request to start PNO will fail because PNO is active and should be stopped first. Fix this by deferring the request to start PNO until the SCHED_SCAN_STOPPED event is received in case sched_scan is being stopped. Signed-off-by: Avraham Stern <avraham.stern@intel.com>
This commit is contained in:
parent
14f34a7303
commit
5ac8f8623d
1 changed files with 7 additions and 0 deletions
|
@ -2420,6 +2420,13 @@ int wpas_start_pno(struct wpa_supplicant *wpa_s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wpa_s->sched_scan_stop_req) {
|
||||||
|
wpa_printf(MSG_DEBUG,
|
||||||
|
"Schedule PNO after previous sched scan has stopped");
|
||||||
|
wpa_s->pno_sched_pending = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
os_memset(¶ms, 0, sizeof(params));
|
os_memset(¶ms, 0, sizeof(params));
|
||||||
|
|
||||||
num_ssid = num_match_ssid = 0;
|
num_ssid = num_match_ssid = 0;
|
||||||
|
|
Loading…
Reference in a new issue