diff options
author | Juuso Oikarinen <juuso.oikarinen@nokia.com> | 2010-11-22 13:59:08 +0300 |
---|---|---|
committer | Luciano Coelho <luciano.coelho@nokia.com> | 2010-11-22 17:45:14 +0300 |
commit | b84a7d3d9e7cd5a25f4fd32142cebdf4481a74a4 (patch) | |
tree | bbccc94eb0ce0a6c8b9624f3186ebfcae418edec /drivers/net/wireless/wl12xx | |
parent | 68d069c45f73e8aeda0249891daec1f7e2f0e067 (diff) | |
download | linux-b84a7d3d9e7cd5a25f4fd32142cebdf4481a74a4.tar.xz |
wl12xx: Unset bssid filter, ssid and bssid from firmware on disassoc
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@nokia.com>
Reviewed-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx')
-rw-r--r-- | drivers/net/wireless/wl12xx/main.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c index 31f0e2f6ffc3..708ffe304c6d 100644 --- a/drivers/net/wireless/wl12xx/main.c +++ b/drivers/net/wireless/wl12xx/main.c @@ -2011,9 +2011,12 @@ static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw, /* Disable the keep-alive feature */ ret = wl1271_acx_keep_alive_mode(wl, false); - if (ret < 0) goto out_sleep; + + /* restore the bssid filter and go to dummy bssid */ + wl1271_unjoin(wl); + wl1271_dummy_join(wl); } } |