[PATCH] fix rogue disconnect issues w/WPA2 Enterprise networks

Hendrik Beijeman hbeijeman
Tue Sep 21 07:54:45 PDT 2010


 Hello everyone,

My university's WPA2 enterprise network kept disconnecting me after a
random period ranging from seconds to minutes. Close examination of
wpa_supplicant output would show these lines on the exact moment the
connection got dropped;

RTM_NEWLINK: operstate=1 ifi_flags=0x1003 ([UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
RTM_NEWLINK: operstate=1 ifi_flags=0x1003 ([UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
Wireless event: cmd=0x8b15 len=24
Wireless event: new AP: 00:00:00:00:00:00
Disassociation notification
Attempt to scan while wpa_state >= WPA_ASSOCIATED aborted!
Try BSSID 00:1a:1e:91:5f:e0 into blacklist
CTRL-EVENT-DISCONNECTED bssid=00:1a:1e:91:5f:e0 reason=0

The disassociation was being forced in wpa_driver_wext_event_wireless()
upon receiving event SIOCGIWAP;
disabling that piece of code (see patch below) made the problem go away
entirely, and I'm now enjoying a stable connection.

This is an ugly hack though, and I have absolutely no idea what I'm
doing. If someone is interested in making a more permanent solution,
please let me know how and if I can help,

Kind regards,
Hendrik

diff against 0.7.3

--- /tmp/wpa_supplicant-0.7.3/src/drivers/driver_wext.c 2010-09-07
17:43:39.000000000 +0200
+++ ./wpa_supplicant-0.7.3/src/drivers/driver_wext.c    2010-09-20
07:46:55.413397935 +0200
@@ -466,12 +466,14 @@ static void wpa_driver_wext_event_wirele
                            os_memcmp(iwe->u.ap_addr.sa_data,
                                      "\x44\x44\x44\x44\x44\x44",
ETH_ALEN) ==
                            0) {
+                               /*
                                os_free(drv->assoc_req_ies);
                                drv->assoc_req_ies = NULL;
                                os_free(drv->assoc_resp_ies);
                                drv->assoc_resp_ies = NULL;
                                wpa_supplicant_event(drv->ctx,
EVENT_DISASSOC,
-                                                    NULL);
+                                                    NULL);*/
+                               wpa_printf(MSG_DEBUG, "Ignoring disassoc
attempt");                                                 
 
                        } else {
                                wpa_driver_wext_event_assoc_ies(drv);




More information about the Hostap mailing list