Reset normal_scans counter upon entering INTERFACE_DISABLED state
authorArend van Spriel <arend@broadcom.com>
Wed, 15 Jan 2014 09:11:32 +0000 (10:11 +0100)
committerJouni Malinen <j@w1.fi>
Fri, 17 Jan 2014 09:48:17 +0000 (11:48 +0200)
Depending on the implementation, the scheduled scan may not give results
quickly when in DISCONNECTED state. This patch resets
wpa_s::normal_scans upon entering to the INTERFACE_DISABLED state so a
normal scan is assured upon going to DISCONNECTED state after the
interface has been re-enabled. This mainly solves a long reconnect time
observed upon repeated kernel driver reloads, i.e., third reload
resulted in a scheduled scan.

Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-hostap: Arend van Spriel <arend@broadcom.com>

wpa_supplicant/wpa_supplicant.c

index 78e2749..b7c16ca 100644 (file)
@@ -652,6 +652,11 @@ void wpa_supplicant_set_state(struct wpa_supplicant *wpa_s,
                wpa_supplicant_state_txt(wpa_s->wpa_state),
                wpa_supplicant_state_txt(state));
 
+       if (state == WPA_INTERFACE_DISABLED) {
+               /* Assure normal scan when interface is restored */
+               wpa_s->normal_scans = 0;
+       }
+
        if (state == WPA_COMPLETED)
                wpas_connect_work_done(wpa_s);