Commit 87627214 authored by Eliad Peller's avatar Eliad Peller Committed by Luciano Coelho

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: default avatarEliad Peller <eliad@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent 83587505
...@@ -1957,6 +1957,7 @@ static int wl12xx_init_vif_data(struct wl1271 *wl, struct ieee80211_vif *vif) ...@@ -1957,6 +1957,7 @@ static int wl12xx_init_vif_data(struct wl1271 *wl, struct ieee80211_vif *vif)
wlvif->beacon_int = WL1271_DEFAULT_BEACON_INT; wlvif->beacon_int = WL1271_DEFAULT_BEACON_INT;
INIT_DELAYED_WORK(&wlvif->pspoll_work, wl1271_pspoll_work); INIT_DELAYED_WORK(&wlvif->pspoll_work, wl1271_pspoll_work);
INIT_LIST_HEAD(&wlvif->list);
return 0; return 0;
} }
...@@ -2114,6 +2115,7 @@ static int wl1271_op_add_interface(struct ieee80211_hw *hw, ...@@ -2114,6 +2115,7 @@ static int wl1271_op_add_interface(struct ieee80211_hw *hw,
goto out; goto out;
wl->vif = vif; wl->vif = vif;
list_add(&wlvif->list, &wl->wlvif_list);
set_bit(WL1271_FLAG_IF_INITIALIZED, &wl->flags); set_bit(WL1271_FLAG_IF_INITIALIZED, &wl->flags);
out: out:
mutex_unlock(&wl->mutex); mutex_unlock(&wl->mutex);
...@@ -2181,6 +2183,7 @@ static void __wl1271_op_remove_interface(struct wl1271 *wl, ...@@ -2181,6 +2183,7 @@ static void __wl1271_op_remove_interface(struct wl1271 *wl,
wl12xx_tx_reset_wlvif(wl, wlvif); wl12xx_tx_reset_wlvif(wl, wlvif);
wl1271_free_ap_keys(wl, wlvif); wl1271_free_ap_keys(wl, wlvif);
list_del(&wlvif->list);
memset(wlvif->ap.sta_hlid_map, 0, sizeof(wlvif->ap.sta_hlid_map)); memset(wlvif->ap.sta_hlid_map, 0, sizeof(wlvif->ap.sta_hlid_map));
wlvif->role_id = WL12XX_INVALID_ROLE_ID; wlvif->role_id = WL12XX_INVALID_ROLE_ID;
wlvif->dev_role_id = WL12XX_INVALID_ROLE_ID; wlvif->dev_role_id = WL12XX_INVALID_ROLE_ID;
...@@ -4869,6 +4872,7 @@ struct ieee80211_hw *wl1271_alloc_hw(void) ...@@ -4869,6 +4872,7 @@ struct ieee80211_hw *wl1271_alloc_hw(void)
memset(wl, 0, sizeof(*wl)); memset(wl, 0, sizeof(*wl));
INIT_LIST_HEAD(&wl->list); INIT_LIST_HEAD(&wl->list);
INIT_LIST_HEAD(&wl->wlvif_list);
wl->hw = hw; wl->hw = hw;
wl->plat_dev = plat_dev; wl->plat_dev = plat_dev;
......
...@@ -394,6 +394,8 @@ struct wl1271 { ...@@ -394,6 +394,8 @@ struct wl1271 {
unsigned long roles_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)]; unsigned long roles_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)];
unsigned long roc_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)]; unsigned long roc_map[BITS_TO_LONGS(WL12XX_MAX_ROLES)];
struct list_head wlvif_list;
struct wl1271_acx_mem_map *target_mem_map; struct wl1271_acx_mem_map *target_mem_map;
/* Accounting for allocated / available TX blocks on HW */ /* Accounting for allocated / available TX blocks on HW */
...@@ -564,6 +566,7 @@ struct wl1271_station { ...@@ -564,6 +566,7 @@ struct wl1271_station {
struct wl12xx_vif { struct wl12xx_vif {
struct wl1271 *wl; struct wl1271 *wl;
struct list_head list;
u8 bss_type; u8 bss_type;
u8 p2p; /* we are using p2p role */ u8 p2p; /* we are using p2p role */
u8 role_id; u8 role_id;
...@@ -653,6 +656,9 @@ struct ieee80211_vif *wl12xx_wlvif_to_vif(struct wl12xx_vif *wlvif) ...@@ -653,6 +656,9 @@ struct ieee80211_vif *wl12xx_wlvif_to_vif(struct wl12xx_vif *wlvif)
return container_of((void *)wlvif, struct ieee80211_vif, drv_priv); return container_of((void *)wlvif, struct ieee80211_vif, drv_priv);
} }
#define wl12xx_for_each_wlvif(wl, wlvif) \
list_for_each_entry(wlvif, &wl->wlvif_list, list)
int wl1271_plt_start(struct wl1271 *wl); int wl1271_plt_start(struct wl1271 *wl);
int wl1271_plt_stop(struct wl1271 *wl); int wl1271_plt_stop(struct wl1271 *wl);
int wl1271_recalc_rx_streaming(struct wl1271 *wl); int wl1271_recalc_rx_streaming(struct wl1271 *wl);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment