Takashi Iwai 3b65c5
From 70fb028707c8871ef9e56b3ffa3d895e14956cc4 Mon Sep 17 00:00:00 2001
Takashi Iwai 3b65c5
From: Felix Fietkau <nbd@nbd.name>
Takashi Iwai 3b65c5
Date: Thu, 25 Nov 2021 10:42:12 +0100
Takashi Iwai 3b65c5
Subject: [PATCH] mt76: mt7615: improve wmm index allocation
Takashi Iwai 3b65c5
Git-commit: 70fb028707c8871ef9e56b3ffa3d895e14956cc4
Takashi Iwai 3b65c5
Patch-mainline: v5.17-rc1
Takashi Iwai 3b65c5
References: git-fixes
Takashi Iwai 3b65c5
Takashi Iwai 3b65c5
Typically all AP interfaces on a PHY will share the same WMM settings, while
Takashi Iwai 3b65c5
sta/mesh interfaces will usually inherit the settings from a remote device.
Takashi Iwai 3b65c5
In order minimize the likelihood of conflicting WMM settings, make all AP
Takashi Iwai 3b65c5
interfaces share one slot, and all non-AP interfaces another one.
Takashi Iwai 3b65c5
Takashi Iwai 3b65c5
This also fixes running multiple AP interfaces on MT7613, which only has 3
Takashi Iwai 3b65c5
WMM slots.
Takashi Iwai 3b65c5
Takashi Iwai 3b65c5
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Takashi Iwai 3b65c5
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 3b65c5
Takashi Iwai 3b65c5
---
Takashi Iwai 3b65c5
 drivers/net/wireless/mediatek/mt76/mt7615/main.c | 8 +++-----
Takashi Iwai 3b65c5
 1 file changed, 3 insertions(+), 5 deletions(-)
Takashi Iwai 3b65c5
Takashi Iwai 3b65c5
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/main.c b/drivers/net/wireless/mediatek/mt76/mt7615/main.c
Takashi Iwai 3b65c5
index a0e8db0b27f9..e519fd2879ec 100644
Takashi Iwai 3b65c5
--- a/drivers/net/wireless/mediatek/mt76/mt7615/main.c
Takashi Iwai 3b65c5
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/main.c
Takashi Iwai 3b65c5
@@ -208,11 +208,9 @@ static int mt7615_add_interface(struct ieee80211_hw *hw,
Takashi Iwai 3b65c5
 	mvif->mt76.omac_idx = idx;
Takashi Iwai 3b65c5
 
Takashi Iwai 3b65c5
 	mvif->mt76.band_idx = ext_phy;
Takashi Iwai 3b65c5
-	if (mt7615_ext_phy(dev))
Takashi Iwai 3b65c5
-		mvif->mt76.wmm_idx = ext_phy * (MT7615_MAX_WMM_SETS / 2) +
Takashi Iwai 3b65c5
-				mvif->mt76.idx % (MT7615_MAX_WMM_SETS / 2);
Takashi Iwai 3b65c5
-	else
Takashi Iwai 3b65c5
-		mvif->mt76.wmm_idx = mvif->mt76.idx % MT7615_MAX_WMM_SETS;
Takashi Iwai 3b65c5
+	mvif->mt76.wmm_idx = vif->type != NL80211_IFTYPE_AP;
Takashi Iwai 3b65c5
+	if (ext_phy)
Takashi Iwai 3b65c5
+		mvif->mt76.wmm_idx += 2;
Takashi Iwai 3b65c5
 
Takashi Iwai 3b65c5
 	dev->mt76.vif_mask |= BIT(mvif->mt76.idx);
Takashi Iwai 3b65c5
 	dev->omac_mask |= BIT_ULL(mvif->mt76.omac_idx);
Takashi Iwai 3b65c5
-- 
Takashi Iwai 3b65c5
2.31.1
Takashi Iwai 3b65c5