wl12xx: replace wl->bssid with vif->bss_conf.bssid
authorEliad Peller <eliad@wizery.com>
Wed, 5 Oct 2011 09:55:44 +0000 (11:55 +0200)
committerLuciano Coelho <coelho@ti.com>
Fri, 7 Oct 2011 05:32:36 +0000 (08:32 +0300)
Use the per-interface vif->bss_conf instead of the global wl->bssid.

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

index ce734157980a9bce2c63076ee3469f87bae9bf80..b9bb76b22f58931abb5007454a686295c9c3272f 100644 (file)
@@ -557,6 +557,7 @@ out:
 
 int wl12xx_cmd_role_start_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif)
 {
+       struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);
        struct wl12xx_cmd_role_start *cmd;
        int ret;
 
@@ -577,7 +578,7 @@ int wl12xx_cmd_role_start_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif)
        cmd->sta.ssid_type = WL12XX_SSID_TYPE_ANY;
        cmd->sta.ssid_len = wl->ssid_len;
        memcpy(cmd->sta.ssid, wl->ssid, wl->ssid_len);
-       memcpy(cmd->sta.bssid, wl->bssid, ETH_ALEN);
+       memcpy(cmd->sta.bssid, vif->bss_conf.bssid, ETH_ALEN);
        cmd->sta.local_rates = cpu_to_le32(wlvif->rate_set);
 
        if (wl->sta_hlid == WL12XX_INVALID_LINK_ID) {
@@ -769,6 +770,7 @@ out:
 
 int wl12xx_cmd_role_start_ibss(struct wl1271 *wl, struct wl12xx_vif *wlvif)
 {
+       struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);
        struct wl12xx_cmd_role_start *cmd;
        struct ieee80211_bss_conf *bss_conf = &wl->vif->bss_conf;
        int ret;
@@ -791,7 +793,7 @@ int wl12xx_cmd_role_start_ibss(struct wl1271 *wl, struct wl12xx_vif *wlvif)
        cmd->ibss.ssid_type = WL12XX_SSID_TYPE_ANY;
        cmd->ibss.ssid_len = wl->ssid_len;
        memcpy(cmd->ibss.ssid, wl->ssid, wl->ssid_len);
-       memcpy(cmd->ibss.bssid, wl->bssid, ETH_ALEN);
+       memcpy(cmd->ibss.bssid, vif->bss_conf.bssid, ETH_ALEN);
        cmd->sta.local_rates = cpu_to_le32(wlvif->rate_set);
 
        if (wl->sta_hlid == WL12XX_INVALID_LINK_ID) {
@@ -807,7 +809,8 @@ int wl12xx_cmd_role_start_ibss(struct wl1271 *wl, struct wl12xx_vif *wlvif)
                     wl->role_id, cmd->sta.hlid, cmd->sta.session,
                     wlvif->basic_rate_set, wlvif->rate_set);
 
-       wl1271_debug(DEBUG_CMD, "wl->bssid = %pM", wl->bssid);
+       wl1271_debug(DEBUG_CMD, "vif->bss_conf.bssid = %pM",
+                    vif->bss_conf.bssid);
 
        ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0);
        if (ret < 0) {
@@ -1213,9 +1216,9 @@ int wl1271_build_qos_null_data(struct wl1271 *wl, struct ieee80211_vif *vif)
 
        memset(&template, 0, sizeof(template));
 
-       memcpy(template.addr1, wl->bssid, ETH_ALEN);
+       memcpy(template.addr1, vif->bss_conf.bssid, ETH_ALEN);
        memcpy(template.addr2, vif->addr, ETH_ALEN);
-       memcpy(template.addr3, wl->bssid, ETH_ALEN);
+       memcpy(template.addr3, vif->bss_conf.bssid, ETH_ALEN);
 
        template.frame_control = cpu_to_le16(IEEE80211_FTYPE_DATA |
                                             IEEE80211_STYPE_QOS_NULLFUNC |
index af4cef366a3e7b099449374630856a02b4ecb5be..30d05fd24672d4d7b765f3f6599e3f5094a2ea4a 100644 (file)
@@ -184,7 +184,7 @@ static void wl1271_stop_ba_event(struct wl1271 *wl)
                if (!wl->ba_rx_bitmap)
                        return;
                ieee80211_stop_rx_ba_session(wl->vif, wl->ba_rx_bitmap,
-                                            wl->bssid);
+                                            wl->vif->bss_conf.bssid);
        } else {
                int i;
                struct wl1271_link *lnk;
index 8863ea542ea6a9352fdcbfd56256c5d43d208c78..d19c3fe348600c485d4d18326758780fa59bb621 100644 (file)
@@ -2098,7 +2098,6 @@ deinit:
        wl1271_tx_reset(wl, reset_tx_queues);
        wl1271_power_off(wl);
 
-       memset(wl->bssid, 0, ETH_ALEN);
        memset(wl->ssid, 0, IEEE80211_MAX_SSID_LEN + 1);
        wl->ssid_len = 0;
        wl->bss_type = MAX_BSS_TYPE;
@@ -2249,8 +2248,6 @@ static int wl1271_unjoin(struct wl1271 *wl)
        if (ret < 0)
                goto out;
 
-       memset(wl->bssid, 0, ETH_ALEN);
-
        /* reset TX security counters on a clean disconnect */
        wl->tx_security_last_seq_lsb = 0;
        wl->tx_security_seq = 0;
@@ -3449,15 +3446,8 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
                wl->rssi_thold = bss_conf->cqm_rssi_thold;
        }
 
-       if ((changed & BSS_CHANGED_BSSID) &&
-           /*
-            * Now we know the correct bssid, so we send a new join command
-            * and enable the BSSID filter
-            */
-           memcmp(wl->bssid, bss_conf->bssid, ETH_ALEN)) {
-               memcpy(wl->bssid, bss_conf->bssid, ETH_ALEN);
-
-               if (!is_zero_ether_addr(wl->bssid)) {
+       if (changed & BSS_CHANGED_BSSID)
+               if (!is_zero_ether_addr(bss_conf->bssid)) {
                        ret = wl12xx_cmd_build_null_data(wl, wlvif);
                        if (ret < 0)
                                goto out;
@@ -3469,7 +3459,6 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
                        /* Need to update the BSSID (for filtering etc) */
                        do_join = true;
                }
-       }
 
        if (changed & (BSS_CHANGED_ASSOC | BSS_CHANGED_HT)) {
                rcu_read_lock();
index d355c737044b227b847813e20e2769872a2fd536..44a5daeff07ed5cae1a4506c615033f1c8aba8d4 100644 (file)
@@ -399,7 +399,6 @@ struct wl1271 {
 
        s8 hw_pg_ver;
 
-       u8 bssid[ETH_ALEN];
        u8 mac_addr[ETH_ALEN];
        u8 bss_type;
        u8 set_bss_type;