mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
wifi: mt76: mt7996: prepare mt7996_mcu_set_tx for MLO support
Pass in struct ieee80211_bss_conf in order to use link specific data. Link: https://patch.msgid.link/20250102163508.52945-17-nbd@nbd.name Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
@@ -469,7 +469,8 @@ mt7996_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
unsigned int link_id, u16 queue,
|
||||
const struct ieee80211_tx_queue_params *params)
|
||||
{
|
||||
struct mt7996_vif *mvif = (struct mt7996_vif *)vif->drv_priv;
|
||||
struct mt7996_dev *dev = mt7996_hw_dev(hw);
|
||||
struct mt7996_vif_link *mlink = mt7996_vif_link(dev, vif, link_id);
|
||||
static const u8 mq_to_aci[] = {
|
||||
[IEEE80211_AC_VO] = 3,
|
||||
[IEEE80211_AC_VI] = 2,
|
||||
@@ -478,7 +479,7 @@ mt7996_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
};
|
||||
|
||||
/* firmware uses access class index */
|
||||
mvif->deflink.queue_params[mq_to_aci[queue]] = *params;
|
||||
mlink->queue_params[mq_to_aci[queue]] = *params;
|
||||
/* no need to update right away, we'll get BSS_CHANGED_QOS */
|
||||
|
||||
return 0;
|
||||
@@ -656,7 +657,7 @@ static void mt7996_bss_info_changed(struct ieee80211_hw *hw,
|
||||
|
||||
/* ensure that enable txcmd_mode after bss_info */
|
||||
if (changed & (BSS_CHANGED_QOS | BSS_CHANGED_BEACON_ENABLED))
|
||||
mt7996_mcu_set_tx(dev, vif);
|
||||
mt7996_mcu_set_tx(dev, vif, info);
|
||||
|
||||
if (changed & BSS_CHANGED_HE_OBSS_PD)
|
||||
mt7996_mcu_add_obss_spr(phy, vif, &info->he_obss_pd);
|
||||
|
||||
@@ -3145,7 +3145,8 @@ int mt7996_mcu_set_hdr_trans(struct mt7996_dev *dev, bool hdr_trans)
|
||||
MCU_WM_UNI_CMD(RX_HDR_TRANS), true);
|
||||
}
|
||||
|
||||
int mt7996_mcu_set_tx(struct mt7996_dev *dev, struct ieee80211_vif *vif)
|
||||
int mt7996_mcu_set_tx(struct mt7996_dev *dev, struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *link_conf)
|
||||
{
|
||||
#define MCU_EDCA_AC_PARAM 0
|
||||
#define WMM_AIFS_SET BIT(0)
|
||||
@@ -3154,12 +3155,12 @@ int mt7996_mcu_set_tx(struct mt7996_dev *dev, struct ieee80211_vif *vif)
|
||||
#define WMM_TXOP_SET BIT(3)
|
||||
#define WMM_PARAM_SET (WMM_AIFS_SET | WMM_CW_MIN_SET | \
|
||||
WMM_CW_MAX_SET | WMM_TXOP_SET)
|
||||
struct mt7996_vif *mvif = (struct mt7996_vif *)vif->drv_priv;
|
||||
struct mt7996_vif_link *link = mt7996_vif_conf_link(dev, vif, link_conf);
|
||||
struct {
|
||||
u8 bss_idx;
|
||||
u8 __rsv[3];
|
||||
} __packed hdr = {
|
||||
.bss_idx = mvif->deflink.mt76.idx,
|
||||
.bss_idx = link->mt76.idx,
|
||||
};
|
||||
struct sk_buff *skb;
|
||||
int len = sizeof(hdr) + IEEE80211_NUM_ACS * sizeof(struct edca);
|
||||
@@ -3172,7 +3173,7 @@ int mt7996_mcu_set_tx(struct mt7996_dev *dev, struct ieee80211_vif *vif)
|
||||
skb_put_data(skb, &hdr, sizeof(hdr));
|
||||
|
||||
for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) {
|
||||
struct ieee80211_tx_queue_params *q = &mvif->deflink.queue_params[ac];
|
||||
struct ieee80211_tx_queue_params *q = &link->queue_params[ac];
|
||||
struct edca *e;
|
||||
struct tlv *tlv;
|
||||
|
||||
|
||||
@@ -543,7 +543,8 @@ int mt7996_mcu_add_rate_ctrl(struct mt7996_dev *dev, struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta, bool changed);
|
||||
int mt7996_set_channel(struct mt76_phy *mphy);
|
||||
int mt7996_mcu_set_chan_info(struct mt7996_phy *phy, u16 tag);
|
||||
int mt7996_mcu_set_tx(struct mt7996_dev *dev, struct ieee80211_vif *vif);
|
||||
int mt7996_mcu_set_tx(struct mt7996_dev *dev, struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *link_conf);
|
||||
int mt7996_mcu_set_fixed_rate_ctrl(struct mt7996_dev *dev,
|
||||
void *data, u16 version);
|
||||
int mt7996_mcu_set_fixed_field(struct mt7996_dev *dev, struct ieee80211_vif *vif,
|
||||
|
||||
Reference in New Issue
Block a user