Defer scans while PNO is in progress instead of skipping them
Skipping the scan altogether will hurt auto-reconnect. Also move the PNO check down since the scan might be canceled for other reasons before we defer it. Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
This commit is contained in:
parent
a1fce3911f
commit
57f93d6889
1 changed files with 15 additions and 5 deletions
|
@ -714,11 +714,6 @@ static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx)
|
|||
size_t max_ssids;
|
||||
int connect_without_scan = 0;
|
||||
|
||||
if (wpa_s->pno || wpa_s->pno_sched_pending) {
|
||||
wpa_dbg(wpa_s, MSG_DEBUG, "Skip scan - PNO is in progress");
|
||||
return;
|
||||
}
|
||||
|
||||
if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
|
||||
wpa_dbg(wpa_s, MSG_DEBUG, "Skip scan - interface disabled");
|
||||
return;
|
||||
|
@ -779,6 +774,21 @@ static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx)
|
|||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Don't cancel the scan based on ongoing PNO; defer it. Some scans are
|
||||
* used for changing modes inside wpa_supplicant (roaming,
|
||||
* auto-reconnect, etc). Discarding the scan might hurt these processes.
|
||||
* The normal use case for PNO is to suspend the host immediately after
|
||||
* starting PNO, so the periodic 100 ms attempts to run the scan do not
|
||||
* normally happen in practice multiple times, i.e., this is simply
|
||||
* restarting scanning once the host is woken up and PNO stopped.
|
||||
*/
|
||||
if (wpa_s->pno || wpa_s->pno_sched_pending) {
|
||||
wpa_dbg(wpa_s, MSG_DEBUG, "Defer scan - PNO is in progress");
|
||||
wpa_supplicant_req_scan(wpa_s, 0, 100000);
|
||||
return;
|
||||
}
|
||||
|
||||
if (wpa_s->conf->ap_scan == 2)
|
||||
max_ssids = 1;
|
||||
else {
|
||||
|
|
Loading…
Reference in a new issue