| From 88577bcf928a15c2e8e78b7684ccb75dfc693eac Mon Sep 17 00:00:00 2001 |
| From: Peter Chiu <chui-hao.chiu@mediatek.com> |
| Date: Mon, 20 Mar 2023 19:09:59 +0800 |
| Subject: [PATCH 21/39] wifi: mt76: mt7996: update wmm queue mapping |
| |
| The mac80211 use mac80211 queue (MQ) and the firmware |
| use access class index (ACI) so convert the MQ to ACI |
| in mt7996_conf_tx. |
| |
| Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com> |
| --- |
| mt7996/main.c | 11 +++++++++-- |
| mt7996/mcu.c | 2 +- |
| 2 files changed, 10 insertions(+), 3 deletions(-) |
| |
| diff --git a/mt7996/main.c b/mt7996/main.c |
| index 9c80839..8e38ebc 100644 |
| --- a/mt7996/main.c |
| +++ b/mt7996/main.c |
| @@ -198,7 +198,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) |
| @@ -422,9 +422,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_NUM_ACS] = { |
| + [IEEE80211_AC_VO] = 3, |
| + [IEEE80211_AC_VI] = 2, |
| + [IEEE80211_AC_BE] = 0, |
| + [IEEE80211_AC_BK] = 1, |
| + }; |
| |
| /* no need to update right away, we'll get BSS_CHANGED_QOS */ |
| - queue = mt76_connac_lmac_mapping(queue); |
| + /* convert mac80211 queue to ACI */ |
| + queue = MQ_to_ACI[queue]; |
| mvif->queue_params[queue] = *params; |
| |
| return 0; |
| diff --git a/mt7996/mcu.c b/mt7996/mcu.c |
| index b27b88c..4359ede 100644 |
| --- a/mt7996/mcu.c |
| +++ b/mt7996/mcu.c |
| @@ -2835,7 +2835,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); |
| |
| -- |
| 2.18.0 |
| |