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>
This commit is contained in:
committed by
Luciano Coelho
parent
83587505a2
commit
8762721473
@@ -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,
|
|||||||
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 @@ deinit:
|
|||||||
|
|
||||||
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)
|
|||||||
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 {
|
|||||||
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 {
|
|||||||
|
|
||||||
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)
|
|||||||
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);
|
||||||
|
Reference in New Issue
Block a user