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 <dimitrysh@google.com>
This commit is contained in:
Dmitry Shmidt 2015-03-30 13:44:11 -07:00 committed by Jouni Malinen
parent 80fd9c3576
commit 02e122a995

View file

@ -3164,6 +3164,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
union wpa_event_data *data) union wpa_event_data *data)
{ {
struct wpa_supplicant *wpa_s = ctx; struct wpa_supplicant *wpa_s = ctx;
int resched;
if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED && if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED &&
event != EVENT_INTERFACE_ENABLED && event != EVENT_INTERFACE_ENABLED &&
@ -3730,6 +3731,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
case EVENT_SCHED_SCAN_STOPPED: case EVENT_SCHED_SCAN_STOPPED:
wpa_s->pno = 0; wpa_s->pno = 0;
wpa_s->sched_scanning = 0; wpa_s->sched_scanning = 0;
resched = wpa_s->scanning;
wpa_supplicant_notify_scanning(wpa_s, 0); wpa_supplicant_notify_scanning(wpa_s, 0);
if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) 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) { } else if (wpa_s->pno_sched_pending) {
wpa_s->pno_sched_pending = 0; wpa_s->pno_sched_pending = 0;
wpas_start_pno(wpa_s); wpas_start_pno(wpa_s);
} else if (resched) {
wpa_supplicant_req_scan(wpa_s, 0, 0);
} }
break; break;