mt76: mt7615: improve wmm index allocation
authorFelix Fietkau <nbd@nbd.name>
Thu, 25 Nov 2021 09:42:12 +0000 (10:42 +0100)
committerFelix Fietkau <nbd@nbd.name>
Sun, 19 Dec 2021 14:24:01 +0000 (15:24 +0100)
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>
drivers/net/wireless/mediatek/mt76/mt7615/main.c

index a0e8db0b27f96848227c22d3a5b2eb542e9074d0..e519fd2879ec64dc4053f154dd7223241e24767f 100644 (file)
@@ -208,11 +208,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);