lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 498/800] mt76: mt7921: fix OMAC idx usage
    Date
    From: Sean Wang <sean.wang@mediatek.com>

    [ Upstream commit 213f87289ea01514acdbfeed9f65bcb5f12aef70 ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    .../net/wireless/mediatek/mt76/mt7921/main.c | 55 +------------------
    1 file changed, 1 insertion(+), 54 deletions(-)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
    index 97a0ef331ac3..bd77a04a15fb 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
    @@ -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;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 11:09    [W:3.427 / U:0.848 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site