aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/wl12xx
diff options
context:
space:
mode:
authorEliad Peller <eliad@wizery.com>2010-12-26 03:27:50 -0500
committerLuciano Coelho <coelho@ti.com>2011-01-24 15:11:51 -0500
commitfa287b8f291d79f080182eb353d1c1f4f374ae87 (patch)
tree222f77e8491fa126a924bc980768e51b24778dea /drivers/net/wireless/wl12xx
parent2354b9fdda6491c8476498b246ff7c48d324a07f (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.c22
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)) {