aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEliad Peller <eliad@wizery.com>2011-10-05 05:55:57 -0400
committerLuciano Coelho <coelho@ti.com>2011-10-07 01:32:47 -0400
commitafaf8bdb2b08bbf493b03757243821df72b26c53 (patch)
tree40559a05c2be90301d9a579a9fe557dd79251ac3 /drivers
parente936bbe0dc235458408c060deaa43f5b8b0bd705 (diff)
wl12xx: move dev_hlid into wlvif
move dev_hlid into the per-interface data, rather than being global. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/wl12xx/cmd.c14
-rw-r--r--drivers/net/wireless/wl12xx/main.c4
-rw-r--r--drivers/net/wireless/wl12xx/tx.c4
-rw-r--r--drivers/net/wireless/wl12xx/wl12xx.h2
4 files changed, 11 insertions, 13 deletions
diff --git a/drivers/net/wireless/wl12xx/cmd.c b/drivers/net/wireless/wl12xx/cmd.c
index 89d263e7b569..166d984cb5af 100644
--- a/drivers/net/wireless/wl12xx/cmd.c
+++ b/drivers/net/wireless/wl12xx/cmd.c
@@ -483,12 +483,12 @@ int wl12xx_cmd_role_start_dev(struct wl1271 *wl, struct wl12xx_vif *wlvif)
483 cmd->band = WL12XX_BAND_5GHZ; 483 cmd->band = WL12XX_BAND_5GHZ;
484 cmd->channel = wl->channel; 484 cmd->channel = wl->channel;
485 485
486 if (wl->dev_hlid == WL12XX_INVALID_LINK_ID) { 486 if (wlvif->dev_hlid == WL12XX_INVALID_LINK_ID) {
487 ret = wl12xx_allocate_link(wl, &wl->dev_hlid); 487 ret = wl12xx_allocate_link(wl, &wlvif->dev_hlid);
488 if (ret) 488 if (ret)
489 goto out_free; 489 goto out_free;
490 } 490 }
491 cmd->device.hlid = wl->dev_hlid; 491 cmd->device.hlid = wlvif->dev_hlid;
492 cmd->device.session = wlvif->session_counter; 492 cmd->device.session = wlvif->session_counter;
493 493
494 wl1271_debug(DEBUG_CMD, "role start: roleid=%d, hlid=%d, session=%d", 494 wl1271_debug(DEBUG_CMD, "role start: roleid=%d, hlid=%d, session=%d",
@@ -504,9 +504,7 @@ int wl12xx_cmd_role_start_dev(struct wl1271 *wl, struct wl12xx_vif *wlvif)
504 504
505err_hlid: 505err_hlid:
506 /* clear links on error */ 506 /* clear links on error */
507 __clear_bit(wl->dev_hlid, wl->links_map); 507 wl12xx_free_link(wl, &wlvif->dev_hlid);
508 wl->dev_hlid = WL12XX_INVALID_LINK_ID;
509
510 508
511out_free: 509out_free:
512 kfree(cmd); 510 kfree(cmd);
@@ -520,7 +518,7 @@ int wl12xx_cmd_role_stop_dev(struct wl1271 *wl, struct wl12xx_vif *wlvif)
520 struct wl12xx_cmd_role_stop *cmd; 518 struct wl12xx_cmd_role_stop *cmd;
521 int ret; 519 int ret;
522 520
523 if (WARN_ON(wl->dev_hlid == WL12XX_INVALID_LINK_ID)) 521 if (WARN_ON(wlvif->dev_hlid == WL12XX_INVALID_LINK_ID))
524 return -EINVAL; 522 return -EINVAL;
525 523
526 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); 524 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
@@ -547,7 +545,7 @@ int wl12xx_cmd_role_stop_dev(struct wl1271 *wl, struct wl12xx_vif *wlvif)
547 goto out_free; 545 goto out_free;
548 } 546 }
549 547
550 wl12xx_free_link(wl, &wl->dev_hlid); 548 wl12xx_free_link(wl, &wlvif->dev_hlid);
551 549
552out_free: 550out_free:
553 kfree(cmd); 551 kfree(cmd);
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c
index effba53eb3f4..e8d73d70cedf 100644
--- a/drivers/net/wireless/wl12xx/main.c
+++ b/drivers/net/wireless/wl12xx/main.c
@@ -1884,6 +1884,7 @@ static int wl12xx_init_vif_data(struct ieee80211_vif *vif)
1884 1884
1885 wlvif->role_id = WL12XX_INVALID_ROLE_ID; 1885 wlvif->role_id = WL12XX_INVALID_ROLE_ID;
1886 wlvif->dev_role_id = WL12XX_INVALID_ROLE_ID; 1886 wlvif->dev_role_id = WL12XX_INVALID_ROLE_ID;
1887 wlvif->dev_hlid = WL12XX_INVALID_LINK_ID;
1887 1888
1888 if (wlvif->bss_type == BSS_TYPE_STA_BSS || 1889 if (wlvif->bss_type == BSS_TYPE_STA_BSS ||
1889 wlvif->bss_type == BSS_TYPE_IBSS) { 1890 wlvif->bss_type == BSS_TYPE_IBSS) {
@@ -2103,7 +2104,7 @@ static void __wl1271_op_remove_interface(struct wl1271 *wl,
2103deinit: 2104deinit:
2104 /* clear all hlids (except system_hlid) */ 2105 /* clear all hlids (except system_hlid) */
2105 wlvif->sta.hlid = WL12XX_INVALID_LINK_ID; 2106 wlvif->sta.hlid = WL12XX_INVALID_LINK_ID;
2106 wl->dev_hlid = WL12XX_INVALID_LINK_ID; 2107 wlvif->dev_hlid = WL12XX_INVALID_LINK_ID;
2107 wlvif->ap.bcast_hlid = WL12XX_INVALID_LINK_ID; 2108 wlvif->ap.bcast_hlid = WL12XX_INVALID_LINK_ID;
2108 wlvif->ap.global_hlid = WL12XX_INVALID_LINK_ID; 2109 wlvif->ap.global_hlid = WL12XX_INVALID_LINK_ID;
2109 2110
@@ -4908,7 +4909,6 @@ struct ieee80211_hw *wl1271_alloc_hw(void)
4908 wl->tx_security_last_seq_lsb = 0; 4909 wl->tx_security_last_seq_lsb = 0;
4909 wl->tx_spare_blocks = TX_HW_BLOCK_SPARE_DEFAULT; 4910 wl->tx_spare_blocks = TX_HW_BLOCK_SPARE_DEFAULT;
4910 wl->system_hlid = WL12XX_SYSTEM_HLID; 4911 wl->system_hlid = WL12XX_SYSTEM_HLID;
4911 wl->dev_hlid = WL12XX_INVALID_LINK_ID;
4912 wl->active_sta_count = 0; 4912 wl->active_sta_count = 0;
4913 setup_timer(&wl->rx_streaming_timer, wl1271_rx_streaming_timer, 4913 setup_timer(&wl->rx_streaming_timer, wl1271_rx_streaming_timer,
4914 (unsigned long) wl); 4914 (unsigned long) wl);
diff --git a/drivers/net/wireless/wl12xx/tx.c b/drivers/net/wireless/wl12xx/tx.c
index da8427f5d7a8..8db68c649437 100644
--- a/drivers/net/wireless/wl12xx/tx.c
+++ b/drivers/net/wireless/wl12xx/tx.c
@@ -94,7 +94,7 @@ static int wl1271_tx_update_filters(struct wl1271 *wl,
94 if (!ieee80211_is_auth(hdr->frame_control)) 94 if (!ieee80211_is_auth(hdr->frame_control))
95 return 0; 95 return 0;
96 96
97 if (wl->dev_hlid != WL12XX_INVALID_LINK_ID) 97 if (wlvif->dev_hlid != WL12XX_INVALID_LINK_ID)
98 goto out; 98 goto out;
99 99
100 wl1271_debug(DEBUG_CMD, "starting device role for roaming"); 100 wl1271_debug(DEBUG_CMD, "starting device role for roaming");
@@ -202,7 +202,7 @@ static u8 wl1271_tx_get_hlid(struct wl1271 *wl, struct ieee80211_vif *vif,
202 !ieee80211_is_assoc_req(hdr->frame_control)) 202 !ieee80211_is_assoc_req(hdr->frame_control))
203 return wlvif->sta.hlid; 203 return wlvif->sta.hlid;
204 else 204 else
205 return wl->dev_hlid; 205 return wlvif->dev_hlid;
206} 206}
207 207
208static unsigned int wl12xx_calc_packet_alignment(struct wl1271 *wl, 208static unsigned int wl12xx_calc_packet_alignment(struct wl1271 *wl,
diff --git a/drivers/net/wireless/wl12xx/wl12xx.h b/drivers/net/wireless/wl12xx/wl12xx.h
index 9fcaa03cd737..752b6b99210c 100644
--- a/drivers/net/wireless/wl12xx/wl12xx.h
+++ b/drivers/net/wireless/wl12xx/wl12xx.h
@@ -402,7 +402,6 @@ struct wl1271 {
402 u8 mac_addr[ETH_ALEN]; 402 u8 mac_addr[ETH_ALEN];
403 int channel; 403 int channel;
404 u8 system_hlid; 404 u8 system_hlid;
405 u8 dev_hlid;
406 405
407 unsigned long links_map[BITS_TO_LONGS(WL12XX_MAX_LINKS)]; 406 unsigned long links_map[BITS_TO_LONGS(WL12XX_MAX_LINKS)];
408 unsigned long roles_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)]; 407 unsigned long roles_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)];
@@ -617,6 +616,7 @@ struct wl12xx_vif {
617 616
618 /* sta/ibss specific */ 617 /* sta/ibss specific */
619 u8 dev_role_id; 618 u8 dev_role_id;
619 u8 dev_hlid;
620 620
621 union { 621 union {
622 struct { 622 struct {