[PATCH 10/18] wpa_supplicant: Fix PNO restart flow
andrei.otcheretianski at intel.com
andrei.otcheretianski at intel.com
Mon Sep 5 07:33:03 PDT 2016
From: Avraham Stern <avraham.stern at intel.com>
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.
Signed-off-by: Avraham Stern <avraham.stern at intel.com>
---
wpa_supplicant/scan.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c
index 47629de..6dfd2e8 100644
--- a/wpa_supplicant/scan.c
+++ b/wpa_supplicant/scan.c
@@ -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));
num_ssid = num_match_ssid = 0;
--
1.9.1
More information about the Hostap
mailing list