Search Linux Wireless

redesigning authentication/association flows

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

 



Hi,

I've been growing unhappy with the way I designed authentication and
association in cfg80211 and I'm ready to admit that the way it works now
was a design mistake. Just see the tx_sync as an example, and if we
explicitly do remain-on-channel for the authentication or association
then we'll have to start doing GO NoA sync within r-o-c which will be a
nightmare.

So I think we should just revisit all this. Here's what I currently
think I will do:

== cfg80211
 - get rid of the entire auth_bss/auth_try_bss, etc. Allow
   authentication and association at any time (even association without
   authentication, AP will reject anyway)
 - keep track only of current_bss with authenticated/associated flag to
   list it in scan results
 - entirely handle local state change for authentication in cfg80211
   since drivers can no longer expect auth/assoc sequencing

(note that in current code all of this only impacts mac80211 since no
other driver supports authenticate/associate commands)

== mac80211
When asked to auth/assoc change sequence to do:
 - if associated to BSSID != new BSSID:
   - send null data PM=1 to AP (?)
 - if authenticated/associated to BSSID != new BSSID:
   - bss_info_changed: zero bssid, not associated, zero aid etc
   - remove AP station entry
 - if not already configured as such:
   - clear IDLE for interface
   - set channel (in the future: for interface)
   - bss_info_changed: set correct bssid, not associated, ...
   - add AP station entry (even to driver, not dummy as today)
 - send frame
 - check response, if failure clear configuration


Note that this gets rid of the stupid tx_sync, the attempt at doing this
off-channel, and we never have to deal with tx_sync in remain-on-channel
which would be really really strange.

The only difference really is that today, if auth fails, we can stay
connected. HOWEVER, wpa_supplicant isn't actually able to deal with
that, gets confused and recovers with clear_state_mismatch().


I think this will help all drivers, from at76c50x which is broken
completely today, wl1251 which has a dummy join, wl12xx which has a work
around with remain-on-channel but this doesn't work well with a GO (NoA)
and of course iwlwifi (which has tx_sync for this) and iwlegacy which
has a bunch of RXON ping-pong things going on.

I don't think ath5k, ath9k and most other drivers will really be
impacted, the ones I'm not sure about are Ralink and Realtek drivers.

Anyone have major issues with this?

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[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