]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mt76: mt7996: fix wmm queue mapping
authorPeter Chiu <chui-hao.chiu@mediatek.com>
Thu, 17 Aug 2023 08:01:49 +0000 (16:01 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:56:49 +0000 (11:56 +0100)
[ Upstream commit 9b11696e5c5bf6030a32571f3f88845226d8b662 ]

Firmware uses access class index (ACI) for wmm parameters update, so
convert mac80211 queue to ACI in mt7996_conf_tx().

Fixes: 98686cd21624 ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt7996/main.c
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c

index f306e9c50ea3b635ee6c96f5503c56bf4cd554a2..16db03e86d7a25539eae4b65523cbc5c7b8949f3 100644 (file)
@@ -184,7 +184,7 @@ static int mt7996_add_interface(struct ieee80211_hw *hw,
        mvif->mt76.omac_idx = idx;
        mvif->phy = phy;
        mvif->mt76.band_idx = band_idx;
-       mvif->mt76.wmm_idx = band_idx;
+       mvif->mt76.wmm_idx = vif->type != NL80211_IFTYPE_AP;
 
        ret = mt7996_mcu_add_dev_info(phy, vif, true);
        if (ret)
@@ -414,10 +414,16 @@ mt7996_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
               const struct ieee80211_tx_queue_params *params)
 {
        struct mt7996_vif *mvif = (struct mt7996_vif *)vif->drv_priv;
+       const u8 mq_to_aci[] = {
+               [IEEE80211_AC_VO] = 3,
+               [IEEE80211_AC_VI] = 2,
+               [IEEE80211_AC_BE] = 0,
+               [IEEE80211_AC_BK] = 1,
+       };
 
+       /* firmware uses access class index */
+       mvif->queue_params[mq_to_aci[queue]] = *params;
        /* no need to update right away, we'll get BSS_CHANGED_QOS */
-       queue = mt76_connac_lmac_mapping(queue);
-       mvif->queue_params[queue] = *params;
 
        return 0;
 }
index 8244bb356102861e5bc9448d9afd44a599f792b0..6520761d9fe1395613718ad69e799945614bd225 100644 (file)
@@ -2580,7 +2580,7 @@ int mt7996_mcu_set_tx(struct mt7996_dev *dev, struct ieee80211_vif *vif)
 
                e = (struct edca *)tlv;
                e->set = WMM_PARAM_SET;
-               e->queue = ac + mvif->mt76.wmm_idx * MT7996_MAX_WMM_SETS;
+               e->queue = ac;
                e->aifs = q->aifs;
                e->txop = cpu_to_le16(q->txop);