On Sat, 2009-10-31 at 12:33 +0200, Maxim Levitsky wrote: > > Now, especially since you say that this still runs into problems while > > connecting to a new AP, I think that wpa_supplicant should > > deauthenticate from the old AP. After all, it wants to eventually > > control FT and anything we do in the kernel will come back and interfere > > with that. > Exactly, at least for now. > > How about putting this in wpa_supplicant, and end all trouble with this > for once? > > This is a workaround/hack, but at least it works.... I'm all for fixing the problem in wpa_supplicant, and it should be plenty clear that I believe that except for the little auth-while-auth thing, the bug _is_ in wpa_supplicant. However, it's not my decision. I'll fix the auth-while-auth eventually, but I believe it is not really the problem in your case. johannes > commit e57bfd6e760c32177ab74c462839dd20a92343b8 > Author: Maxim Levitsky > Date: Sat Oct 31 12:05:35 2009 +0200 > > driver_nl80211: send deauth on disassoc > > diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c > index b3861f5..dfed87d 100644 > --- a/src/drivers/driver_nl80211.c > +++ b/src/drivers/driver_nl80211.c > @@ -2046,12 +2046,18 @@ static int wpa_driver_nl80211_deauthenticate(void *priv, const u8 *addr, > static int wpa_driver_nl80211_disassociate(void *priv, const u8 *addr, > int reason_code) > { > + int err; > struct wpa_driver_nl80211_data *drv = priv; > if (!(drv->capa.flags & WPA_DRIVER_FLAGS_SME)) > return wpa_driver_nl80211_disconnect(drv, addr, reason_code); > wpa_printf(MSG_DEBUG, "%s", __func__); > drv->associated = 0; > - return wpa_driver_nl80211_mlme(drv, addr, NL80211_CMD_DISASSOCIATE, > + > + err = wpa_driver_nl80211_mlme(drv, addr, NL80211_CMD_DISASSOCIATE, > + reason_code); > + if (err) > + return err; > + return wpa_driver_nl80211_mlme(drv, addr, NL80211_CMD_DEAUTHENTICATE, > reason_code); > } > > > >