aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/wl12xx
diff options
context:
space:
mode:
authorEliad Peller <eliad@wizery.com>2011-10-05 05:55:44 -0400
committerLuciano Coelho <coelho@ti.com>2011-10-07 01:32:36 -0400
commitcdf09495588fda7e9c15c25bc20cb828e07be314 (patch)
treeeef30352c4619b787515c95b8a7c5b79ad785d0b /drivers/net/wireless/wl12xx
parentd2d66c56cf6c8727662aa321991f791604c22094 (diff)
wl12xx: replace wl->bssid with vif->bss_conf.bssid
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>
Diffstat (limited to 'drivers/net/wireless/wl12xx')
-rw-r--r--drivers/net/wireless/wl12xx/cmd.c13
-rw-r--r--drivers/net/wireless/wl12xx/event.c2
-rw-r--r--drivers/net/wireless/wl12xx/main.c15
-rw-r--r--drivers/net/wireless/wl12xx/wl12xx.h1
4 files changed, 11 insertions, 20 deletions
diff --git a/drivers/net/wireless/wl12xx/cmd.c b/drivers/net/wireless/wl12xx/cmd.c
index ce734157980a..b9bb76b22f58 100644
--- a/drivers/net/wireless/wl12xx/cmd.c
+++ b/drivers/net/wireless/wl12xx/cmd.c
@@ -557,6 +557,7 @@ out:
557 557
558int wl12xx_cmd_role_start_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif) 558int wl12xx_cmd_role_start_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif)
559{ 559{
560 struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);
560 struct wl12xx_cmd_role_start *cmd; 561 struct wl12xx_cmd_role_start *cmd;
561 int ret; 562 int ret;
562 563
@@ -577,7 +578,7 @@ int wl12xx_cmd_role_start_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif)
577 cmd->sta.ssid_type = WL12XX_SSID_TYPE_ANY; 578 cmd->sta.ssid_type = WL12XX_SSID_TYPE_ANY;
578 cmd->sta.ssid_len = wl->ssid_len; 579 cmd->sta.ssid_len = wl->ssid_len;
579 memcpy(cmd->sta.ssid, wl->ssid, wl->ssid_len); 580 memcpy(cmd->sta.ssid, wl->ssid, wl->ssid_len);
580 memcpy(cmd->sta.bssid, wl->bssid, ETH_ALEN); 581 memcpy(cmd->sta.bssid, vif->bss_conf.bssid, ETH_ALEN);
581 cmd->sta.local_rates = cpu_to_le32(wlvif->rate_set); 582 cmd->sta.local_rates = cpu_to_le32(wlvif->rate_set);
582 583
583 if (wl->sta_hlid == WL12XX_INVALID_LINK_ID) { 584 if (wl->sta_hlid == WL12XX_INVALID_LINK_ID) {
@@ -769,6 +770,7 @@ out:
769 770
770int wl12xx_cmd_role_start_ibss(struct wl1271 *wl, struct wl12xx_vif *wlvif) 771int wl12xx_cmd_role_start_ibss(struct wl1271 *wl, struct wl12xx_vif *wlvif)
771{ 772{
773 struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);
772 struct wl12xx_cmd_role_start *cmd; 774 struct wl12xx_cmd_role_start *cmd;
773 struct ieee80211_bss_conf *bss_conf = &wl->vif->bss_conf; 775 struct ieee80211_bss_conf *bss_conf = &wl->vif->bss_conf;
774 int ret; 776 int ret;
@@ -791,7 +793,7 @@ int wl12xx_cmd_role_start_ibss(struct wl1271 *wl, struct wl12xx_vif *wlvif)
791 cmd->ibss.ssid_type = WL12XX_SSID_TYPE_ANY; 793 cmd->ibss.ssid_type = WL12XX_SSID_TYPE_ANY;
792 cmd->ibss.ssid_len = wl->ssid_len; 794 cmd->ibss.ssid_len = wl->ssid_len;
793 memcpy(cmd->ibss.ssid, wl->ssid, wl->ssid_len); 795 memcpy(cmd->ibss.ssid, wl->ssid, wl->ssid_len);
794 memcpy(cmd->ibss.bssid, wl->bssid, ETH_ALEN); 796 memcpy(cmd->ibss.bssid, vif->bss_conf.bssid, ETH_ALEN);
795 cmd->sta.local_rates = cpu_to_le32(wlvif->rate_set); 797 cmd->sta.local_rates = cpu_to_le32(wlvif->rate_set);
796 798
797 if (wl->sta_hlid == WL12XX_INVALID_LINK_ID) { 799 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)
807 wl->role_id, cmd->sta.hlid, cmd->sta.session, 809 wl->role_id, cmd->sta.hlid, cmd->sta.session,
808 wlvif->basic_rate_set, wlvif->rate_set); 810 wlvif->basic_rate_set, wlvif->rate_set);
809 811
810 wl1271_debug(DEBUG_CMD, "wl->bssid = %pM", wl->bssid); 812 wl1271_debug(DEBUG_CMD, "vif->bss_conf.bssid = %pM",
813 vif->bss_conf.bssid);
811 814
812 ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0); 815 ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0);
813 if (ret < 0) { 816 if (ret < 0) {
@@ -1213,9 +1216,9 @@ int wl1271_build_qos_null_data(struct wl1271 *wl, struct ieee80211_vif *vif)
1213 1216
1214 memset(&template, 0, sizeof(template)); 1217 memset(&template, 0, sizeof(template));
1215 1218
1216 memcpy(template.addr1, wl->bssid, ETH_ALEN); 1219 memcpy(template.addr1, vif->bss_conf.bssid, ETH_ALEN);
1217 memcpy(template.addr2, vif->addr, ETH_ALEN); 1220 memcpy(template.addr2, vif->addr, ETH_ALEN);
1218 memcpy(template.addr3, wl->bssid, ETH_ALEN); 1221 memcpy(template.addr3, vif->bss_conf.bssid, ETH_ALEN);
1219 1222
1220 template.frame_control = cpu_to_le16(IEEE80211_FTYPE_DATA | 1223 template.frame_control = cpu_to_le16(IEEE80211_FTYPE_DATA |
1221 IEEE80211_STYPE_QOS_NULLFUNC | 1224 IEEE80211_STYPE_QOS_NULLFUNC |
diff --git a/drivers/net/wireless/wl12xx/event.c b/drivers/net/wireless/wl12xx/event.c
index af4cef366a3e..30d05fd24672 100644
--- a/drivers/net/wireless/wl12xx/event.c
+++ b/drivers/net/wireless/wl12xx/event.c
@@ -184,7 +184,7 @@ static void wl1271_stop_ba_event(struct wl1271 *wl)
184 if (!wl->ba_rx_bitmap) 184 if (!wl->ba_rx_bitmap)
185 return; 185 return;
186 ieee80211_stop_rx_ba_session(wl->vif, wl->ba_rx_bitmap, 186 ieee80211_stop_rx_ba_session(wl->vif, wl->ba_rx_bitmap,
187 wl->bssid); 187 wl->vif->bss_conf.bssid);
188 } else { 188 } else {
189 int i; 189 int i;
190 struct wl1271_link *lnk; 190 struct wl1271_link *lnk;
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c
index 8863ea542ea6..d19c3fe34860 100644
--- a/drivers/net/wireless/wl12xx/main.c
+++ b/drivers/net/wireless/wl12xx/main.c
@@ -2098,7 +2098,6 @@ deinit:
2098 wl1271_tx_reset(wl, reset_tx_queues); 2098 wl1271_tx_reset(wl, reset_tx_queues);
2099 wl1271_power_off(wl); 2099 wl1271_power_off(wl);
2100 2100
2101 memset(wl->bssid, 0, ETH_ALEN);
2102 memset(wl->ssid, 0, IEEE80211_MAX_SSID_LEN + 1); 2101 memset(wl->ssid, 0, IEEE80211_MAX_SSID_LEN + 1);
2103 wl->ssid_len = 0; 2102 wl->ssid_len = 0;
2104 wl->bss_type = MAX_BSS_TYPE; 2103 wl->bss_type = MAX_BSS_TYPE;
@@ -2249,8 +2248,6 @@ static int wl1271_unjoin(struct wl1271 *wl)
2249 if (ret < 0) 2248 if (ret < 0)
2250 goto out; 2249 goto out;
2251 2250
2252 memset(wl->bssid, 0, ETH_ALEN);
2253
2254 /* reset TX security counters on a clean disconnect */ 2251 /* reset TX security counters on a clean disconnect */
2255 wl->tx_security_last_seq_lsb = 0; 2252 wl->tx_security_last_seq_lsb = 0;
2256 wl->tx_security_seq = 0; 2253 wl->tx_security_seq = 0;
@@ -3449,15 +3446,8 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
3449 wl->rssi_thold = bss_conf->cqm_rssi_thold; 3446 wl->rssi_thold = bss_conf->cqm_rssi_thold;
3450 } 3447 }
3451 3448
3452 if ((changed & BSS_CHANGED_BSSID) && 3449 if (changed & BSS_CHANGED_BSSID)
3453 /* 3450 if (!is_zero_ether_addr(bss_conf->bssid)) {
3454 * Now we know the correct bssid, so we send a new join command
3455 * and enable the BSSID filter
3456 */
3457 memcmp(wl->bssid, bss_conf->bssid, ETH_ALEN)) {
3458 memcpy(wl->bssid, bss_conf->bssid, ETH_ALEN);
3459
3460 if (!is_zero_ether_addr(wl->bssid)) {
3461 ret = wl12xx_cmd_build_null_data(wl, wlvif); 3451 ret = wl12xx_cmd_build_null_data(wl, wlvif);
3462 if (ret < 0) 3452 if (ret < 0)
3463 goto out; 3453 goto out;
@@ -3469,7 +3459,6 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
3469 /* Need to update the BSSID (for filtering etc) */ 3459 /* Need to update the BSSID (for filtering etc) */
3470 do_join = true; 3460 do_join = true;
3471 } 3461 }
3472 }
3473 3462
3474 if (changed & (BSS_CHANGED_ASSOC | BSS_CHANGED_HT)) { 3463 if (changed & (BSS_CHANGED_ASSOC | BSS_CHANGED_HT)) {
3475 rcu_read_lock(); 3464 rcu_read_lock();
diff --git a/drivers/net/wireless/wl12xx/wl12xx.h b/drivers/net/wireless/wl12xx/wl12xx.h
index d355c737044b..44a5daeff07e 100644
--- a/drivers/net/wireless/wl12xx/wl12xx.h
+++ b/drivers/net/wireless/wl12xx/wl12xx.h
@@ -399,7 +399,6 @@ struct wl1271 {
399 399
400 s8 hw_pg_ver; 400 s8 hw_pg_ver;
401 401
402 u8 bssid[ETH_ALEN];
403 u8 mac_addr[ETH_ALEN]; 402 u8 mac_addr[ETH_ALEN];
404 u8 bss_type; 403 u8 bss_type;
405 u8 set_bss_type; 404 u8 set_bss_type;