On Fri, 2008-05-16 at 00:30 +0200, Michael Buesch wrote: > Hi John, > > Association is broken in latest wireless-testing when using > wpa_supplicant. It tells me > > Trying to associate with REAL_BSSID... > Authentication with 00:00:00:00:00:00 timed out. > > The commit responsible for the breakage is > > Author: Abhijeet Kolekar <abhijeet.kolekar@xxxxxxxxx> 2008-05-09 18:35:41 > Committer: John W. Linville <linville@xxxxxxxxxxxxx> 2008-05-15 22:11:19 > Parent: 6d7ef8714c227884346aebd9f4e5eea302db6d22 (hostap: fix "registers" registration in procfs) > Child: d67ec7fb2b8ce69709def2421ab893517b101591 (libertas: fix command timeout after firmware failure) > Branches: master, remotes/origin/master > Follows: master-2008-05-14 > Precedes: master-2008-05-15 > > mac80211 : Association with 11n hidden ssid ap. Ok, so after knowing what breaks, I can tell you why :) The original code looks like this: - if (!(ifsta->flags & (IEEE80211_STA_AUTO_SSID_SEL | - IEEE80211_STA_AUTO_BSSID_SEL | IEEE80211_STA_AUTO_CHANNEL_SEL))) { - ifsta->state = IEEE80211_AUTHENTICATE; - ieee80211_sta_reset_auth(dev, ifsta); - return 0; - } spin_lock_bh(&local->sta_bss_lock); freq = local->oper_channel->center_freq; list_for_each_entry(bss, &local->sta_bss_list, list) { if (!(bss->capability & WLAN_CAPABILITY_ESS)) continue; if (!!(bss->capability & WLAN_CAPABILITY_PRIVACY) ^ !!sdata->default_key) continue; [...] Now, with the marked code removed, observe what will happen with the last if statement here when wpa supplicant sets all parameters (i.e. none of the auto flags are set): It will continue the loop because wpa_supplicant hasn't yet set a key, which of course, it cannot. We cannot remove that test either because that would break regular WEP operation; we could "enhance" the test with a huge check for all the flags but I think that's stretching it. Let's work on making cfg80211 work for this instead where we can add any number of flags for these things. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part