mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
wifi: mt76: mt7925: add link handling to txwi
add link handling to mt792x_tx and writing txwi. Co-developed-by: Ming Yen Hsieh <[email protected]> Signed-off-by: Ming Yen Hsieh <[email protected]> Co-developed-by: Deren Wu <[email protected]> Signed-off-by: Deren Wu <[email protected]> Signed-off-by: Sean Wang <[email protected]> Link: https://patch.msgid.link/c0a7c0b33ea2640bcb4f13a5f79a8976b73fa8f2.1720248331.git.sean.wang@kernel.org Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
+24
-2
@@ -59,13 +59,17 @@ void mt792x_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
struct ieee80211_vif *vif = info->control.vif;
|
||||
struct mt76_wcid *wcid = &dev->mt76.global_wcid;
|
||||
u8 link_id;
|
||||
int qid;
|
||||
|
||||
if (control->sta) {
|
||||
struct mt792x_link_sta *mlink;
|
||||
struct mt792x_sta *sta;
|
||||
|
||||
link_id = u32_get_bits(info->control.flags,
|
||||
IEEE80211_TX_CTRL_MLO_LINK);
|
||||
sta = (struct mt792x_sta *)control->sta->drv_priv;
|
||||
wcid = &sta->deflink.wcid;
|
||||
mlink = mt792x_sta_to_link(sta, link_id);
|
||||
wcid = &mlink->wcid;
|
||||
}
|
||||
|
||||
if (vif && !control->sta) {
|
||||
@@ -75,6 +79,24 @@ void mt792x_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
|
||||
wcid = &mvif->sta.deflink.wcid;
|
||||
}
|
||||
|
||||
if (vif && control->sta && ieee80211_vif_is_mld(vif)) {
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||
struct ieee80211_link_sta *link_sta;
|
||||
struct ieee80211_bss_conf *conf;
|
||||
|
||||
link_id = wcid->link_id;
|
||||
rcu_read_lock();
|
||||
conf = rcu_dereference(vif->link_conf[link_id]);
|
||||
memcpy(hdr->addr2, conf->addr, ETH_ALEN);
|
||||
|
||||
link_sta = rcu_dereference(control->sta->link[link_id]);
|
||||
memcpy(hdr->addr1, link_sta->addr, ETH_ALEN);
|
||||
|
||||
if (vif->type == NL80211_IFTYPE_STATION)
|
||||
memcpy(hdr->addr3, conf->bssid, ETH_ALEN);
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
if (mt76_connac_pm_ref(mphy, &dev->pm)) {
|
||||
mt76_tx(mphy, control->sta, wcid, skb);
|
||||
mt76_connac_pm_unref(mphy, &dev->pm);
|
||||
|
||||
Reference in New Issue
Block a user