* redesigning authentication/association flows
@ 2011-11-16 11:13 Johannes Berg
2011-11-16 11:57 ` Luciano Coelho
0 siblings, 1 reply; 2+ messages in thread
From: Johannes Berg @ 2011-11-16 11:13 UTC (permalink / raw)
To: linux-wireless; +Cc: Jouni Malinen
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
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: redesigning authentication/association flows
2011-11-16 11:13 redesigning authentication/association flows Johannes Berg
@ 2011-11-16 11:57 ` Luciano Coelho
0 siblings, 0 replies; 2+ messages in thread
From: Luciano Coelho @ 2011-11-16 11:57 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless, Jouni Malinen
On Wed, 2011-11-16 at 12:13 +0100, Johannes Berg wrote:
> 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.
[...]
> 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.
As discussed on the phone, I think this should be okay with wl12xx. We
will have to study it a bit further to be sure, but my first impression
is that it's should be fine.
One small correction from my mistake, wl1251 doesn't have a dummy join,
it's the old wl12xx which did (with older firmwares that didn't support
roc/croc). Sorry, I got confused.
--
Cheers,
Luca.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-11-16 11:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-16 11:13 redesigning authentication/association flows Johannes Berg
2011-11-16 11:57 ` Luciano Coelho
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox