Commit e3160542 authored by Loic Poulain's avatar Loic Poulain Committed by Kalle Valo

wcn36xx: Track associated stations

Add list of associated stations(STA, AP, peer...) per vif.
Signed-off-by: default avatarLoic Poulain <loic.poulain@linaro.org>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 10db60b9
...@@ -567,6 +567,7 @@ static int wcn36xx_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, ...@@ -567,6 +567,7 @@ static int wcn36xx_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
key_conf->keyidx, key_conf->keyidx,
key_conf->keylen, key_conf->keylen,
key); key);
if ((WLAN_CIPHER_SUITE_WEP40 == key_conf->cipher) || if ((WLAN_CIPHER_SUITE_WEP40 == key_conf->cipher) ||
(WLAN_CIPHER_SUITE_WEP104 == key_conf->cipher)) { (WLAN_CIPHER_SUITE_WEP104 == key_conf->cipher)) {
sta_priv->is_data_encrypted = true; sta_priv->is_data_encrypted = true;
...@@ -984,6 +985,7 @@ static int wcn36xx_add_interface(struct ieee80211_hw *hw, ...@@ -984,6 +985,7 @@ static int wcn36xx_add_interface(struct ieee80211_hw *hw,
mutex_lock(&wcn->conf_mutex); mutex_lock(&wcn->conf_mutex);
vif_priv->bss_index = WCN36XX_HAL_BSS_INVALID_IDX; vif_priv->bss_index = WCN36XX_HAL_BSS_INVALID_IDX;
INIT_LIST_HEAD(&vif_priv->sta_list);
list_add(&vif_priv->list, &wcn->vif_list); list_add(&vif_priv->list, &wcn->vif_list);
wcn36xx_smd_add_sta_self(wcn, vif); wcn36xx_smd_add_sta_self(wcn, vif);
...@@ -1005,6 +1007,8 @@ static int wcn36xx_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, ...@@ -1005,6 +1007,8 @@ static int wcn36xx_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
spin_lock_init(&sta_priv->ampdu_lock); spin_lock_init(&sta_priv->ampdu_lock);
sta_priv->vif = vif_priv; sta_priv->vif = vif_priv;
list_add(&sta_priv->list, &vif_priv->sta_list);
/* /*
* For STA mode HW will be configured on BSS_CHANGED_ASSOC because * For STA mode HW will be configured on BSS_CHANGED_ASSOC because
* at this stage AID is not available yet. * at this stage AID is not available yet.
...@@ -1032,6 +1036,7 @@ static int wcn36xx_sta_remove(struct ieee80211_hw *hw, ...@@ -1032,6 +1036,7 @@ static int wcn36xx_sta_remove(struct ieee80211_hw *hw,
mutex_lock(&wcn->conf_mutex); mutex_lock(&wcn->conf_mutex);
list_del(&sta_priv->list);
wcn36xx_smd_delete_sta(wcn, sta_priv->sta_index); wcn36xx_smd_delete_sta(wcn, sta_priv->sta_index);
sta_priv->vif = NULL; sta_priv->vif = NULL;
......
...@@ -129,6 +129,8 @@ struct wcn36xx_vif { ...@@ -129,6 +129,8 @@ struct wcn36xx_vif {
u8 self_sta_index; u8 self_sta_index;
u8 self_dpu_desc_index; u8 self_dpu_desc_index;
u8 self_ucast_dpu_sign; u8 self_ucast_dpu_sign;
struct list_head sta_list;
}; };
/** /**
...@@ -154,6 +156,7 @@ struct wcn36xx_vif { ...@@ -154,6 +156,7 @@ struct wcn36xx_vif {
* |______________|_____________|_______________| * |______________|_____________|_______________|
*/ */
struct wcn36xx_sta { struct wcn36xx_sta {
struct list_head list;
struct wcn36xx_vif *vif; struct wcn36xx_vif *vif;
u16 aid; u16 aid;
u16 tid; u16 tid;
......
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