mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
wifi: mt76: mt7925: set mt7925_mcu_sta_key_tlv according to link id
configure mt7925_mcu_sta_key_tlv according to link id We created a link id field in the common structure mt76_wcid so that mt7925_mcu_sta_key_tlv can access per-link STA/BSS. Additionally, .link_id will be required when reporting the link information of Rx status to mac80211. We will submit the changes for reporting the Rx status in a separate patch. Co-developed-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com> Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com> Co-developed-by: Deren Wu <deren.wu@mediatek.com> Signed-off-by: Deren Wu <deren.wu@mediatek.com> Signed-off-by: Sean Wang <sean.wang@mediatek.com> Link: https://patch.msgid.link/16d65aae010113f9be3c4e6e759b4226d396a1be.1720248331.git.sean.wang@kernel.org Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
882b97c16a
commit
00e1ca0cad
|
|
@ -349,6 +349,7 @@ struct mt76_wcid {
|
|||
u8 sta:1;
|
||||
u8 amsdu:1;
|
||||
u8 phy_idx:2;
|
||||
u8 link_id:4;
|
||||
|
||||
u8 rx_check_pn;
|
||||
u8 rx_key_pn[IEEE80211_NUM_TIDS + 1][6];
|
||||
|
|
|
|||
|
|
@ -748,6 +748,7 @@ static int mt7925_mac_link_sta_add(struct mt76_dev *mdev,
|
|||
mlink->wcid.phy_idx = mconf->mt76.band_idx;
|
||||
mlink->wcid.tx_info |= MT_WCID_TX_INFO_SET;
|
||||
mlink->last_txs = jiffies;
|
||||
mlink->wcid.link_id = link_sta->link_id;
|
||||
|
||||
ret = mt76_connac_pm_wake(&dev->mphy, &dev->pm);
|
||||
if (ret)
|
||||
|
|
|
|||
|
|
@ -967,6 +967,7 @@ mt7925_mcu_sta_key_tlv(struct mt76_wcid *wcid,
|
|||
struct mt792x_sta *msta = container_of(mlink, struct mt792x_sta, deflink);
|
||||
struct sta_rec_sec_uni *sec;
|
||||
struct mt792x_vif *mvif = msta->vif;
|
||||
struct mt792x_bss_conf *mconf = mt792x_vif_to_link(mvif, wcid->link_id);
|
||||
struct ieee80211_sta *sta;
|
||||
struct ieee80211_vif *vif;
|
||||
struct tlv *tlv;
|
||||
|
|
@ -978,17 +979,23 @@ mt7925_mcu_sta_key_tlv(struct mt76_wcid *wcid,
|
|||
|
||||
tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_KEY_V3, sizeof(*sec));
|
||||
sec = (struct sta_rec_sec_uni *)tlv;
|
||||
sec->bss_idx = mvif->bss_conf.mt76.idx;
|
||||
sec->bss_idx = mconf->mt76.idx;
|
||||
sec->is_authenticator = 0;
|
||||
sec->mgmt_prot = 0;
|
||||
sec->mgmt_prot = 1; /* only used in MLO mode */
|
||||
sec->wlan_idx = (u8)wcid->idx;
|
||||
|
||||
if (sta) {
|
||||
struct ieee80211_link_sta *link_sta;
|
||||
|
||||
sec->tx_key = 1;
|
||||
sec->key_type = 1;
|
||||
memcpy(sec->peer_addr, sta->addr, ETH_ALEN);
|
||||
link_sta = mt792x_sta_to_link_sta(vif, sta, wcid->link_id);
|
||||
memcpy(sec->peer_addr, link_sta->addr, ETH_ALEN);
|
||||
} else {
|
||||
memcpy(sec->peer_addr, vif->bss_conf.bssid, ETH_ALEN);
|
||||
struct ieee80211_bss_conf *link_conf;
|
||||
|
||||
link_conf = mt792x_vif_to_bss_conf(vif, wcid->link_id);
|
||||
memcpy(sec->peer_addr, link_conf->bssid, ETH_ALEN);
|
||||
}
|
||||
|
||||
if (cmd == SET_KEY) {
|
||||
|
|
|
|||
|
|
@ -273,6 +273,17 @@ mt792x_vif_to_bss_conf(struct ieee80211_vif *vif, unsigned int link_id)
|
|||
return link_conf_dereference_protected(vif, link_id);
|
||||
}
|
||||
|
||||
static inline struct ieee80211_link_sta *
|
||||
mt792x_sta_to_link_sta(struct ieee80211_vif *vif, struct ieee80211_sta *sta,
|
||||
unsigned int link_id)
|
||||
{
|
||||
if (!ieee80211_vif_is_mld(vif) ||
|
||||
link_id >= IEEE80211_LINK_UNSPECIFIED)
|
||||
return &sta->deflink;
|
||||
|
||||
return link_sta_dereference_protected(sta, link_id);
|
||||
}
|
||||
|
||||
static inline struct mt792x_dev *
|
||||
mt792x_hw_dev(struct ieee80211_hw *hw)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user