On Wed, 2010-11-17 at 15:29 +0200, juuso.oikarinen@xxxxxxxxx wrote: > From: Juuso Oikarinen <juuso.oikarinen@xxxxxxxxx> > > On the disassociation event from the mac80211, the wl12xx driver does not > clear the chipset configuration related to the AP - i.e. it does not perform > a DISCONNECT and then a JOIN with zero SSID and dummy BSSID. Also, it does not > unset the BSSID filter. > > Often this is not a problem, as the above is performed upon entering idle > state. But if a scenario arises where a new association is attempted without > cycling through idle state, the new association will fail. > > Fix this by resetting the firmware state on disassociation. > > Signed-off-by: Juuso Oikarinen <juuso.oikarinen@xxxxxxxxx> > --- > drivers/net/wireless/wl12xx/main.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c > index 31f0e2f..c523778 100644 > --- a/drivers/net/wireless/wl12xx/main.c > +++ b/drivers/net/wireless/wl12xx/main.c > @@ -2012,6 +2012,10 @@ static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw, > /* Disable the keep-alive feature */ > ret = wl1271_acx_keep_alive_mode(wl, false); > > + /* restore the bssid filter and go to dummy bssid */ > + wl1271_handle_idle(wl, true); > + wl1271_handle_idle(wl, false); > + Hmmm... This looks quite hacky. Can 't you create functions with that "restore the bssid" and "go to dummy bssid" and call them instead? If you do so, you don't have to artificially go to idle and leave idle immediately... -- Cheers, Luca. -- 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