diff options
author | Eliad Peller <eliad@wizery.com> | 2011-10-10 04:12:54 -0400 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2011-10-11 08:04:22 -0400 |
commit | 87627214738fcfd44803e90193f9f2f4583ce68b (patch) | |
tree | 35a36eeb6215b80869d74bbfe465d5345ba23caa /drivers | |
parent | 83587505a2b63bb434f76b26a22f48283b86a467 (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.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/wl12xx.h | 6 |
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); |
2118 | out: | 2120 | out: |
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 | ||
565 | struct wl12xx_vif { | 567 | struct 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 | |||
656 | int wl1271_plt_start(struct wl1271 *wl); | 662 | int wl1271_plt_start(struct wl1271 *wl); |
657 | int wl1271_plt_stop(struct wl1271 *wl); | 663 | int wl1271_plt_stop(struct wl1271 *wl); |
658 | int wl1271_recalc_rx_streaming(struct wl1271 *wl); | 664 | int wl1271_recalc_rx_streaming(struct wl1271 *wl); |