From dd271857a5b501cd88143efe8ca0f0dce4519a91 Mon Sep 17 00:00:00 2001 From: Raja Mani Date: Sat, 18 Jan 2014 20:16:24 +0530 Subject: [PATCH] Skip normal scan when PNO is already in progress Scan request failures are observed in wpa_supplicant debug log when Android framework starts PNO scan in driver via ctrl interface command 'set pno 1' and wpa_supplicant also tries to issue a scan request after PNO has started in the driver. Some drivers may reject a normal scan request when PNO is already in progress. wpa_supplicant should consider PNO status before issuing start scan request to the driver. Otherwise, wpa_supplicant will get failures from driver for the scan request and it will end up rescheduling scan request in periodic interval and get a start scan request failure for each attempt. In order to avoid unnecessary scan attempt when PNO scan is already running, PNO status is checked before issuing scan request to driver. Signed-hostap: Jouni Malinen --- wpa_supplicant/events.c | 1 + wpa_supplicant/scan.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c index 2121bf014..6e6b011ab 100644 --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c @@ -3236,6 +3236,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event, data->driver_gtk_rekey.replay_ctr); break; case EVENT_SCHED_SCAN_STOPPED: + wpa_s->pno = 0; wpa_s->sched_scanning = 0; wpa_supplicant_notify_scanning(wpa_s, 0); diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c index da827bd7e..ed8fa3045 100644 --- a/wpa_supplicant/scan.c +++ b/wpa_supplicant/scan.c @@ -521,6 +521,11 @@ static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx) size_t max_ssids; enum wpa_states prev_state; + if (wpa_s->pno) { + 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;