wpa_supplicant 0.4.6, ndiswrapper 1.6, static wep fails

Tolunay Orkun listmember at orkun.us
Fri Dec 2 18:03:15 EST 2005


I think I've found a problem with wpa_supplicant built for ndiswrapper

Linux 2.6.14-1.1644_FC4
wpa_supplicant v0.4.6
ndiswrapper v1.6
Dell True Mobile 1400 driver R102320 (v3.120.27 A07)
Using ap_scan=2 (hidden AP :( ) with 40bit static WEP keys

Problem: Calling wpa_drv_associate() in wpa_supplicant_associate()
clears static WEP keys while using ndiswrapper driver.

wpa_supplicant_associate() has a provision to reset wep key again after
wpa_drv_associate() but because ndisdriver does not implement get_capa
operation which is used to test for the
WPA_DRIVER_FLAGS_SET_KEYS_AFTER_ASSOC flag, the keys are not reset properly.

I've hacked wpa_supplicant.c as follows to get it working for me. This
is probably not the right way to fix this issue in general. I guess
ndiswrapper needs to support a get_capa operation which returns this
flag (also other capabilities correctly). Is it too bad to aways reset
the static wep keys and drop WPA_DRIVER_FLAGS_SET_KEYS_AFTER_ASSOC

Best regards,

--- wpa_supplicant.c.orig       2005-12-02 15:48:21.000000000 -0600
+++ wpa_supplicant.c    2005-12-02 16:04:11.000000000 -0600
@@ -1245,8 +1245,8 @@
                 wpa_supplicant_req_auth_timeout(wpa_s, 5, 0);

-       if (wep_keys_set && wpa_drv_get_capa(wpa_s, &capa) == 0 &&
-           capa.flags & WPA_DRIVER_FLAGS_SET_KEYS_AFTER_ASSOC) {
+       if (wep_keys_set /* && wpa_drv_get_capa(wpa_s, &capa) == 0 &&
+           capa.flags & WPA_DRIVER_FLAGS_SET_KEYS_AFTER_ASSOC */) {
                 /* Set static WEP keys again */
                 int i;
                 for (i = 0; i < NUM_WEP_KEYS; i++) {

More information about the HostAP mailing list