driver_nl80211 broken again

Jouni Malinen j
Wed Sep 30 15:13:53 PDT 2009

On Wed, Sep 30, 2009 at 03:19:28AM +0200, Maxim Levitsky wrote:

> So I didn't do the testing that soon...
> Got swamped by many bugs present in ubuntu 9.10.
> Now I have attempted same patch on top of wpa_supplicant, and it works.

Depends on your definition of working, I'd guess.. ;-)

> @@ -1302,8 +1302,10 @@ void wpa_supplicant_disassociate(struct wpa_supplicant *wpa_s,
>                         wpa_drv_disassociate(wpa_s, wpa_s->bssid, reason_code);
> +                       wpa_drv_deauthenticate(wpa_s, wpa_s->bssid, reason_code);

To me, this looks broken. When wpa_supplicant requests a
disassociastion, it is _only_ asking for disassociation, not
deauthentication. cfg80211/mac80211 may not currently handle that, but
as far as I can tell, it sounds like an issue there and not in
wpa_supplicant. Johannes may disagree with this, though.

> Would that be enough, or this is too hacky, and we need to audit each callsite of wpa_supplicant_disassociate
> and see if we need to send deauth frame too?

I don't think either of those options would be acceptable for
wpa_supplicant and the correct fix is to make cfg80211/mac80211 be able
to handle authentication to a STA that is already authenticated. If
that is not acceptable, this hack needs to be hidden in driver_nl80211.c
instead of polluting core wpa_supplicant code which is supposed to be
driver independent. In other words, make driver_nl80211.c deauth if auth
fails and then try auth again. I don't really like that much, but if
this needs to be worked around in wpa_supplicant, that is the most
likely place where such a change could be considered.

Jouni Malinen                                            PGP id EFC895FA

More information about the Hostap mailing list