From 02e122a995dea947a2ad2c0d85190d709f9128b7 Mon Sep 17 00:00:00 2001 From: Dmitry Shmidt Date: Mon, 30 Mar 2015 13:44:11 -0700 Subject: [PATCH] Reschedule scan from wpas_stop_pno if it was postponed This reschedules the postponed scan request (if such a request is pending) from EVENT_SCHED_SCAN_STOPPED event handler to speed up scanning after PNO/sched_scan stop has been requested. Signed-off-by: Dmitry Shmidt --- wpa_supplicant/events.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c index f5f303270..a81cead10 100644 --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c @@ -3164,6 +3164,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event, union wpa_event_data *data) { struct wpa_supplicant *wpa_s = ctx; + int resched; if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED && event != EVENT_INTERFACE_ENABLED && @@ -3730,6 +3731,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event, case EVENT_SCHED_SCAN_STOPPED: wpa_s->pno = 0; wpa_s->sched_scanning = 0; + resched = wpa_s->scanning; wpa_supplicant_notify_scanning(wpa_s, 0); if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) @@ -3744,6 +3746,8 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event, } else if (wpa_s->pno_sched_pending) { wpa_s->pno_sched_pending = 0; wpas_start_pno(wpa_s); + } else if (resched) { + wpa_supplicant_req_scan(wpa_s, 0, 0); } break;