This patch decreases the timeouts for assoc/auth to more realistic values. Improves roaming speed Index: wpa_supplicant-0.6.3/wpa_supplicant/events.c =================================================================== --- wpa_supplicant-0.6.3.orig/wpa_supplicant/events.c 2008-02-23 03:45:24.000000000 +0100 +++ wpa_supplicant-0.6.3/wpa_supplicant/events.c 2008-07-09 15:13:37.000000000 +0200 @@ -762,7 +762,7 @@ wpa_supplicant_set_state(wpa_s, WPA_COMPLETED); } else if (!ft_completed) { /* Timeout for receiving the first EAPOL packet */ - wpa_supplicant_req_auth_timeout(wpa_s, 10, 0); + wpa_supplicant_req_auth_timeout(wpa_s, 3, 0); } wpa_supplicant_cancel_scan(wpa_s); Index: wpa_supplicant-0.6.3/wpa_supplicant/scan.c =================================================================== --- wpa_supplicant-0.6.3.orig/wpa_supplicant/scan.c 2008-02-23 03:45:24.000000000 +0100 +++ wpa_supplicant-0.6.3/wpa_supplicant/scan.c 2008-07-09 15:13:37.000000000 +0200 @@ -144,6 +144,7 @@ return; } + wpa_drv_flush_pmkid(wpa_s); if (wpa_s->use_client_mlme) { ieee80211_sta_set_probe_req_ie(wpa_s, extra_ie, extra_ie_len); ret = ieee80211_sta_req_scan(wpa_s, ssid ? ssid->ssid : NULL, @@ -156,7 +157,7 @@ if (ret) { wpa_printf(MSG_WARNING, "Failed to initiate AP scan."); - wpa_supplicant_req_scan(wpa_s, 10, 0); + wpa_supplicant_req_scan(wpa_s, 3, 0); } } Index: wpa_supplicant-0.6.3/wpa_supplicant/wpa_supplicant.c =================================================================== --- wpa_supplicant-0.6.3.orig/wpa_supplicant/wpa_supplicant.c 2008-02-23 03:45:24.000000000 +0100 +++ wpa_supplicant-0.6.3/wpa_supplicant/wpa_supplicant.c 2008-07-09 15:13:37.000000000 +0200 @@ -1092,9 +1092,9 @@ /* Timeout for IEEE 802.11 authentication and association */ int timeout; if (assoc_failed) - timeout = 5; + timeout = 2; else if (wpa_s->conf->ap_scan == 1) - timeout = 10; + timeout = 3; else timeout = 60; wpa_supplicant_req_auth_timeout(wpa_s, timeout, 0);