Use sched_scan in driver init
authorLuciano Coelho <coelho@ti.com>
Tue, 27 Sep 2011 19:21:31 +0000 (22:21 +0300)
committerJouni Malinen <j@w1.fi>
Sat, 15 Oct 2011 15:53:13 +0000 (18:53 +0300)
This patch uses sched_scan, if available, when the driver is
initialized. It also adds a couple of cancel operations where
appropriate.

Signed-off-by: Luciano Coelho <coelho@ti.com>
wpa_supplicant/events.c
wpa_supplicant/sme.c
wpa_supplicant/wpa_supplicant.c

index 08ed7be..9d83e4d 100644 (file)
@@ -996,10 +996,14 @@ static int _wpa_supplicant_event_scan_results(struct wpa_supplicant *wpa_s,
                                 */
                                timeout_sec = 0;
                                timeout_usec = 250000;
+                               wpa_supplicant_req_new_scan(wpa_s, timeout_sec,
+                                                           timeout_usec);
+                               return 0;
                        }
 #endif /* CONFIG_P2P */
-                       wpa_supplicant_req_new_scan(wpa_s, timeout_sec,
-                                                   timeout_usec);
+                       if (wpa_supplicant_req_sched_scan(wpa_s))
+                               wpa_supplicant_req_new_scan(wpa_s, timeout_sec,
+                                                           timeout_usec);
                }
        }
        return 0;
index dbf385e..4cb5062 100644 (file)
@@ -237,6 +237,7 @@ void sme_authenticate(struct wpa_supplicant *wpa_s,
        }
 #endif /* CONFIG_P2P */
 
+       wpa_supplicant_cancel_sched_scan(wpa_s);
        wpa_supplicant_cancel_scan(wpa_s);
 
        wpa_msg(wpa_s, MSG_INFO, "SME: Trying to authenticate with " MACSTR
index 3d1fa9b..9fa737c 100644 (file)
@@ -446,6 +446,8 @@ static void wpa_supplicant_cleanup(struct wpa_supplicant *wpa_s)
        offchannel_deinit(wpa_s);
 #endif /* CONFIG_OFFCHANNEL */
 
+       wpa_supplicant_cancel_sched_scan(wpa_s);
+
        os_free(wpa_s->next_scan_freqs);
        wpa_s->next_scan_freqs = NULL;
 
@@ -1176,6 +1178,7 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
                        wpa_ssid_txt(ssid->ssid, ssid->ssid_len));
                os_memset(wpa_s->pending_bssid, 0, ETH_ALEN);
        }
+       wpa_supplicant_cancel_sched_scan(wpa_s);
        wpa_supplicant_cancel_scan(wpa_s);
 
        /* Starting new association, so clear the possibly used WPA IE from the
@@ -2087,7 +2090,9 @@ int wpa_supplicant_driver_init(struct wpa_supplicant *wpa_s)
 
        wpa_s->prev_scan_ssid = WILDCARD_SSID_SCAN;
        if (wpa_supplicant_enabled_networks(wpa_s->conf)) {
-               wpa_supplicant_req_scan(wpa_s, interface_count, 100000);
+               if (wpa_supplicant_req_sched_scan(wpa_s))
+                       wpa_supplicant_req_scan(wpa_s, interface_count,
+                                               100000);
                interface_count++;
        } else
                wpa_supplicant_set_state(wpa_s, WPA_INACTIVE);