diff options
author | Eliad Peller <eliad@wizery.com> | 2010-12-26 09:27:50 +0100 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2011-01-24 22:11:51 +0200 |
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 8a354916299..a3529f56a3d 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, memcmp(wl->bssid, bss_conf->bssid, ETH_ALEN)) { memcpy(wl->bssid, bss_conf->bssid, ETH_ALEN); - ret = wl1271_cmd_build_null_data(wl); - if (ret < 0) - goto out; + if (!is_zero_ether_addr(wl->bssid)) { + ret = wl1271_cmd_build_null_data(wl); + if (ret < 0) + goto out; - ret = wl1271_build_qos_null_data(wl); - if (ret < 0) - goto out; + ret = wl1271_build_qos_null_data(wl); + if (ret < 0) + goto out; - /* filter out all packets not from this BSSID */ - wl1271_configure_filters(wl, 0); + /* filter out all packets not from this BSSID */ + wl1271_configure_filters(wl, 0); - /* Need to update the BSSID (for filtering etc) */ - do_join = true; + /* Need to update the BSSID (for filtering etc) */ + do_join = true; + } } if ((changed & BSS_CHANGED_ASSOC)) { |