OSDN Git Service

rtw89: only STA mode change vif_type mapping dynamically
authorPing-Ke Shih <pkshih@realtek.com>
Mon, 7 Feb 2022 06:38:56 +0000 (14:38 +0800)
committerKalle Valo <kvalo@kernel.org>
Thu, 10 Feb 2022 08:40:50 +0000 (10:40 +0200)
vif_type mapping indicates hardware operating mode corresponding to vif
type. In STA mode, hardware mode should be INFRA or NO_LINK mode
dynamically according to association status. Since AP mode don't need to
change this by association status intuitively, just do the mapping in
STA mode.

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

index 8157546..8849f31 100644 (file)
@@ -2047,7 +2047,8 @@ int rtw89_core_sta_disconnect(struct rtw89_dev *rtwdev,
        rtw89_mac_bf_disassoc(rtwdev, vif, sta);
        rtw89_core_free_sta_pending_ba(rtwdev, sta);
 
-       rtw89_vif_type_mapping(vif, false);
+       if (vif->type == NL80211_IFTYPE_STATION)
+               rtw89_vif_type_mapping(vif, false);
 
        ret = rtw89_fw_h2c_assoc_cmac_tbl(rtwdev, vif, sta);
        if (ret) {
@@ -2079,7 +2080,6 @@ int rtw89_core_sta_assoc(struct rtw89_dev *rtwdev,
        struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv;
        int ret;
 
-       rtw89_vif_type_mapping(vif, true);
 
        ret = rtw89_fw_h2c_assoc_cmac_tbl(rtwdev, vif, sta);
        if (ret) {
index 02480a6..295d54c 100644 (file)
@@ -324,6 +324,9 @@ static void rtw89_station_mode_sta_assoc(struct rtw89_dev *rtwdev,
                rtw89_err(rtwdev, "can't find sta to set sta_assoc state\n");
                return;
        }
+
+       rtw89_vif_type_mapping(vif, true);
+
        rtw89_core_sta_assoc(rtwdev, vif, sta);
 }