mt76: mt7615: improve wmm index allocation
authorFelix Fietkau <nbd@nbd.name>
Thu, 25 Nov 2021 09:42:12 +0000 (10:42 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 10:04:45 +0000 (11:04 +0100)
[ Upstream commit 70fb028707c8871ef9e56b3ffa3d895e14956cc4 ]

Typically all AP interfaces on a PHY will share the same WMM settings, while
sta/mesh interfaces will usually inherit the settings from a remote device.
In order minimize the likelihood of conflicting WMM settings, make all AP
interfaces share one slot, and all non-AP interfaces another one.

This also fixes running multiple AP interfaces on MT7613, which only has 3
WMM slots.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt7615/main.c

index 51260a669d1664d4c2c23687187b78e338378488..fc266da54fe7b59f6b61a7a28daade18c8ed438b 100644 (file)
@@ -211,11 +211,9 @@ static int mt7615_add_interface(struct ieee80211_hw *hw,
        mvif->mt76.omac_idx = idx;
 
        mvif->mt76.band_idx = ext_phy;
-       if (mt7615_ext_phy(dev))
-               mvif->mt76.wmm_idx = ext_phy * (MT7615_MAX_WMM_SETS / 2) +
-                               mvif->mt76.idx % (MT7615_MAX_WMM_SETS / 2);
-       else
-               mvif->mt76.wmm_idx = mvif->mt76.idx % MT7615_MAX_WMM_SETS;
+       mvif->mt76.wmm_idx = vif->type != NL80211_IFTYPE_AP;
+       if (ext_phy)
+               mvif->mt76.wmm_idx += 2;
 
        dev->mt76.vif_mask |= BIT(mvif->mt76.idx);
        dev->omac_mask |= BIT_ULL(mvif->mt76.omac_idx);