From 1cd93ff743e4362e8e84be59fc6af567faa5ac5d Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Thu, 26 Dec 2013 17:53:20 +0200 Subject: [PATCH] Reschedule own scan request if an externally started one is in progress This avoids some unnecessary attempts to request the driver to start a scan while it is still busy with the scan operation that was started by an external program. Signed-hostap: Jouni Malinen --- wpa_supplicant/scan.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c index a40c5b62a..899d2a99a 100644 --- a/wpa_supplicant/scan.c +++ b/wpa_supplicant/scan.c @@ -508,6 +508,17 @@ static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx) return; } + if (wpa_s->external_scan_running) { + struct os_reltime now, diff; + os_get_reltime(&now); + os_reltime_sub(&now, &wpa_s->scan_start_time, &diff); + if (diff.sec < 30) { + wpa_dbg(wpa_s, MSG_DEBUG, "Externally triggered scan running - Reschedule the incoming scan req"); + wpa_supplicant_req_scan(wpa_s, 1, 0); + return; + } + } + if (!wpa_supplicant_enabled_networks(wpa_s) && wpa_s->scan_req == NORMAL_SCAN_REQ) { wpa_dbg(wpa_s, MSG_DEBUG, "No enabled networks - do not scan");