Search Linux Wireless

Re: Association broken with wpa_supplicant

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux