aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEliad Peller <eliad@wizery.com>2011-10-10 04:12:54 -0400
committerLuciano Coelho <coelho@ti.com>2011-10-11 08:04:22 -0400
commit87627214738fcfd44803e90193f9f2f4583ce68b (patch)
tree35a36eeb6215b80869d74bbfe465d5345ba23caa /drivers
parent83587505a2b63bb434f76b26a22f48283b86a467 (diff)
wl12xx: add vifs list
keep a list of all the vifs associated with our hw. it will be later used in order to iterate through vifs. 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/main.c4
-rw-r--r--drivers/net/wireless/wl12xx/wl12xx.h6
2 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c
index acfc49743d22..56d592398677 100644
--- a/drivers/net/wireless/wl12xx/main.c
+++ b/drivers/net/wireless/wl12xx/main.c
@@ -1957,6 +1957,7 @@ static int wl12xx_init_vif_data(struct wl1271 *wl, struct ieee80211_vif *vif)
1957 wlvif->beacon_int = WL1271_DEFAULT_BEACON_INT; 1957 wlvif->beacon_int = WL1271_DEFAULT_BEACON_INT;
1958 1958
1959 INIT_DELAYED_WORK(&wlvif->pspoll_work, wl1271_pspoll_work); 1959 INIT_DELAYED_WORK(&wlvif->pspoll_work, wl1271_pspoll_work);
1960 INIT_LIST_HEAD(&wlvif->list);
1960 1961
1961 return 0; 1962 return 0;
1962} 1963}
@@ -2114,6 +2115,7 @@ static int wl1271_op_add_interface(struct ieee80211_hw *hw,
2114 goto out; 2115 goto out;
2115 2116
2116 wl->vif = vif; 2117 wl->vif = vif;
2118 list_add(&wlvif->list, &wl->wlvif_list);
2117 set_bit(WL1271_FLAG_IF_INITIALIZED, &wl->flags); 2119 set_bit(WL1271_FLAG_IF_INITIALIZED, &wl->flags);
2118out: 2120out:
2119 mutex_unlock(&wl->mutex); 2121 mutex_unlock(&wl->mutex);
@@ -2181,6 +2183,7 @@ deinit:
2181 2183
2182 wl12xx_tx_reset_wlvif(wl, wlvif); 2184 wl12xx_tx_reset_wlvif(wl, wlvif);
2183 wl1271_free_ap_keys(wl, wlvif); 2185 wl1271_free_ap_keys(wl, wlvif);
2186 list_del(&wlvif->list);
2184 memset(wlvif->ap.sta_hlid_map, 0, sizeof(wlvif->ap.sta_hlid_map)); 2187 memset(wlvif->ap.sta_hlid_map, 0, sizeof(wlvif->ap.sta_hlid_map));
2185 wlvif->role_id = WL12XX_INVALID_ROLE_ID; 2188 wlvif->role_id = WL12XX_INVALID_ROLE_ID;
2186 wlvif->dev_role_id = WL12XX_INVALID_ROLE_ID; 2189 wlvif->dev_role_id = WL12XX_INVALID_ROLE_ID;
@@ -4869,6 +4872,7 @@ struct ieee80211_hw *wl1271_alloc_hw(void)
4869 memset(wl, 0, sizeof(*wl)); 4872 memset(wl, 0, sizeof(*wl));
4870 4873
4871 INIT_LIST_HEAD(&wl->list); 4874 INIT_LIST_HEAD(&wl->list);
4875 INIT_LIST_HEAD(&wl->wlvif_list);
4872 4876
4873 wl->hw = hw; 4877 wl->hw = hw;
4874 wl->plat_dev = plat_dev; 4878 wl->plat_dev = plat_dev;
diff --git a/drivers/net/wireless/wl12xx/wl12xx.h b/drivers/net/wireless/wl12xx/wl12xx.h
index 33ccdf84c432..55561c597ad9 100644
--- a/drivers/net/wireless/wl12xx/wl12xx.h
+++ b/drivers/net/wireless/wl12xx/wl12xx.h
@@ -394,6 +394,8 @@ struct wl1271 {
394 unsigned long roles_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)]; 394 unsigned long roles_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)];
395 unsigned long roc_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)]; 395 unsigned long roc_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)];
396 396
397 struct list_head wlvif_list;
398
397 struct wl1271_acx_mem_map *target_mem_map; 399 struct wl1271_acx_mem_map *target_mem_map;
398 400
399 /* Accounting for allocated / available TX blocks on HW */ 401 /* Accounting for allocated / available TX blocks on HW */
@@ -564,6 +566,7 @@ struct wl1271_station {
564 566
565struct wl12xx_vif { 567struct wl12xx_vif {
566 struct wl1271 *wl; 568 struct wl1271 *wl;
569 struct list_head list;
567 u8 bss_type; 570 u8 bss_type;
568 u8 p2p; /* we are using p2p role */ 571 u8 p2p; /* we are using p2p role */
569 u8 role_id; 572 u8 role_id;
@@ -653,6 +656,9 @@ struct ieee80211_vif *wl12xx_wlvif_to_vif(struct wl12xx_vif *wlvif)
653 return container_of((void *)wlvif, struct ieee80211_vif, drv_priv); 656 return container_of((void *)wlvif, struct ieee80211_vif, drv_priv);
654} 657}
655 658
659#define wl12xx_for_each_wlvif(wl, wlvif) \
660 list_for_each_entry(wlvif, &wl->wlvif_list, list)
661
656int wl1271_plt_start(struct wl1271 *wl); 662int wl1271_plt_start(struct wl1271 *wl);
657int wl1271_plt_stop(struct wl1271 *wl); 663int wl1271_plt_stop(struct wl1271 *wl);
658int wl1271_recalc_rx_streaming(struct wl1271 *wl); 664int wl1271_recalc_rx_streaming(struct wl1271 *wl);