Browse Source

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>
Dmitry Shmidt 10 years ago
parent
commit
02e122a995
1 changed files with 4 additions and 0 deletions
  1. 4 0
      wpa_supplicant/events.c

+ 4 - 0
wpa_supplicant/events.c

@@ -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;