wl12xx: set do_join on BSS_CHANGED_ASSOC
authorEliad Peller <eliad@wizery.com>
Mon, 12 Mar 2012 12:53:04 +0000 (14:53 +0200)
committerLuciano Coelho <coelho@ti.com>
Tue, 10 Apr 2012 09:13:28 +0000 (12:13 +0300)
wl12xx sets the do_join flag (which later starts the
sta role) when the bssid was changed and the sta is
associated. However, this no longer happens after
the "mac80211: remove spurious BSSID change flag"
patch.

Fix it by setting the do_join flag on BSS_CHANGED_ASSOC
(for IBSS, do_join is already set on BSS_CHANGED_IBSS)

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/wl12xx/main.c

index b1555fb..a1ede7b 100644 (file)
@@ -3791,8 +3791,7 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
                wlvif->rssi_thold = bss_conf->cqm_rssi_thold;
        }
 
-       if (changed & BSS_CHANGED_BSSID &&
-           (is_ibss || bss_conf->assoc))
+       if (changed & BSS_CHANGED_BSSID)
                if (!is_zero_ether_addr(bss_conf->bssid)) {
                        ret = wl12xx_cmd_build_null_data(wl, wlvif);
                        if (ret < 0)
@@ -3801,9 +3800,6 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
                        ret = wl1271_build_qos_null_data(wl, vif);
                        if (ret < 0)
                                goto out;
-
-                       /* Need to update the BSSID (for filtering etc) */
-                       do_join = true;
                }
 
        if (changed & (BSS_CHANGED_ASSOC | BSS_CHANGED_HT)) {
@@ -3830,6 +3826,7 @@ sta_not_found:
                        int ieoffset;
                        wlvif->aid = bss_conf->aid;
                        wlvif->beacon_int = bss_conf->beacon_int;
+                       do_join = true;
                        set_assoc = true;
 
                        /*