diff options
author | Eliad Peller <eliad@wizery.com> | 2010-12-26 03:27:50 -0500 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2011-01-24 15:11:51 -0500 |
commit | fa287b8f291d79f080182eb353d1c1f4f374ae87 (patch) | |
tree | 222f77e8491fa126a924bc980768e51b24778dea /drivers/net/wireless/wl12xx | |
parent | 2354b9fdda6491c8476498b246ff7c48d324a07f (diff) |
wl12xx: don't join upon disassociation
wl12xx "rejoins" upon every BSS_CHANGED_BSSID notification.
However, there is no need to rejoin after disassociation, so just
filter out the case when the new bssid is 00:00:00:00:00:00.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx')
-rw-r--r-- | drivers/net/wireless/wl12xx/main.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c index 8a3549162999..a3529f56a3d6 100644 --- a/drivers/net/wireless/wl12xx/main.c +++ b/drivers/net/wireless/wl12xx/main.c | |||
@@ -2266,19 +2266,21 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl, | |||
2266 | memcmp(wl->bssid, bss_conf->bssid, ETH_ALEN)) { | 2266 | memcmp(wl->bssid, bss_conf->bssid, ETH_ALEN)) { |
2267 | memcpy(wl->bssid, bss_conf->bssid, ETH_ALEN); | 2267 | memcpy(wl->bssid, bss_conf->bssid, ETH_ALEN); |
2268 | 2268 | ||
2269 | ret = wl1271_cmd_build_null_data(wl); | 2269 | if (!is_zero_ether_addr(wl->bssid)) { |
2270 | if (ret < 0) | 2270 | ret = wl1271_cmd_build_null_data(wl); |
2271 | goto out; | 2271 | if (ret < 0) |
2272 | goto out; | ||
2272 | 2273 | ||
2273 | ret = wl1271_build_qos_null_data(wl); | 2274 | ret = wl1271_build_qos_null_data(wl); |
2274 | if (ret < 0) | 2275 | if (ret < 0) |
2275 | goto out; | 2276 | goto out; |
2276 | 2277 | ||
2277 | /* filter out all packets not from this BSSID */ | 2278 | /* filter out all packets not from this BSSID */ |
2278 | wl1271_configure_filters(wl, 0); | 2279 | wl1271_configure_filters(wl, 0); |
2279 | 2280 | ||
2280 | /* Need to update the BSSID (for filtering etc) */ | 2281 | /* Need to update the BSSID (for filtering etc) */ |
2281 | do_join = true; | 2282 | do_join = true; |
2283 | } | ||
2282 | } | 2284 | } |
2283 | 2285 | ||
2284 | if ((changed & BSS_CHANGED_ASSOC)) { | 2286 | if ((changed & BSS_CHANGED_ASSOC)) { |