mt76: mt7921: fix OMAC idx usage
authorSean Wang <sean.wang@mediatek.com>
Thu, 20 May 2021 03:46:40 +0000 (11:46 +0800)
committerFelix Fietkau <nbd@nbd.name>
Sat, 19 Jun 2021 07:22:45 +0000 (09:22 +0200)
OMAC idx have to be same with BSS idx according to firmware usage.

Fixes: e0f9fdda81bd ("mt76: mt7921: add ieee80211_ops")
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: YN Chen <yn.chen@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/main.c

index 8016f8377c8ffb231460c6379648f49674519065..175030ec221d38dc6d76b5d8cf75b417d0df4ba6 100644 (file)
@@ -223,54 +223,6 @@ static void mt7921_stop(struct ieee80211_hw *hw)
        mt7921_mutex_release(dev);
 }
 
-static inline int get_free_idx(u32 mask, u8 start, u8 end)
-{
-       return ffs(~mask & GENMASK(end, start));
-}
-
-static int get_omac_idx(enum nl80211_iftype type, u64 mask)
-{
-       int i;
-
-       switch (type) {
-       case NL80211_IFTYPE_STATION:
-               /* prefer hw bssid slot 1-3 */
-               i = get_free_idx(mask, HW_BSSID_1, HW_BSSID_3);
-               if (i)
-                       return i - 1;
-
-               /* next, try to find a free repeater entry for the sta */
-               i = get_free_idx(mask >> REPEATER_BSSID_START, 0,
-                                REPEATER_BSSID_MAX - REPEATER_BSSID_START);
-               if (i)
-                       return i + 32 - 1;
-
-               i = get_free_idx(mask, EXT_BSSID_1, EXT_BSSID_MAX);
-               if (i)
-                       return i - 1;
-
-               if (~mask & BIT(HW_BSSID_0))
-                       return HW_BSSID_0;
-
-               break;
-       case NL80211_IFTYPE_MONITOR:
-               /* ap uses hw bssid 0 and ext bssid */
-               if (~mask & BIT(HW_BSSID_0))
-                       return HW_BSSID_0;
-
-               i = get_free_idx(mask, EXT_BSSID_1, EXT_BSSID_MAX);
-               if (i)
-                       return i - 1;
-
-               break;
-       default:
-               WARN_ON(1);
-               break;
-       }
-
-       return -1;
-}
-
 static int mt7921_add_interface(struct ieee80211_hw *hw,
                                struct ieee80211_vif *vif)
 {
@@ -292,12 +244,7 @@ static int mt7921_add_interface(struct ieee80211_hw *hw,
                goto out;
        }
 
-       idx = get_omac_idx(vif->type, phy->omac_mask);
-       if (idx < 0) {
-               ret = -ENOSPC;
-               goto out;
-       }
-       mvif->mt76.omac_idx = idx;
+       mvif->mt76.omac_idx = mvif->mt76.idx;
        mvif->phy = phy;
        mvif->mt76.band_idx = 0;
        mvif->mt76.wmm_idx = mvif->mt76.idx % MT7921_MAX_WMM_SETS;