OSDN Git Service

rtw89: allocate mac_id for each station in AP mode
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 7 Jan 2022 03:42:26 +0000 (11:42 +0800)
committerKalle Valo <kvalo@kernel.org>
Fri, 28 Jan 2022 15:56:36 +0000 (17:56 +0200)
In station mode, mac_id of station is the same as rtwvif's one.
In AP mode, each station uses individual mac_id.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220107034239.22002-7-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/core.c

index 274f1fb..a4a0795 100644 (file)
@@ -1889,6 +1889,9 @@ int rtw89_core_sta_add(struct rtw89_dev *rtwdev,
                rtw89_btc_ntfy_role_info(rtwdev, rtwvif, rtwsta,
                                         BTC_ROLE_MSTS_STA_CONN_START);
                rtw89_chip_rfk_channel(rtwdev);
+       } else if (vif->type == NL80211_IFTYPE_AP) {
+               rtwsta->mac_id = rtw89_core_acquire_bit_map(rtwdev->mac_id_map,
+                                                           RTW89_MAX_MAC_ID_NUM);
        }
 
        return 0;
@@ -2001,6 +2004,8 @@ int rtw89_core_sta_remove(struct rtw89_dev *rtwdev,
        if (vif->type == NL80211_IFTYPE_STATION)
                rtw89_btc_ntfy_role_info(rtwdev, rtwvif, rtwsta,
                                         BTC_ROLE_MSTS_STA_DIS_CONN);
+       else if (vif->type == NL80211_IFTYPE_AP)
+               rtw89_core_release_bit_map(rtwdev->mac_id_map, rtwsta->mac_id);
 
        return 0;
 }