wifi: rtw89: differentiate narrow_bw_ru_dis setting according to chip gen
authorZong-Zhe Yang <kevin_yang@realtek.com>
Fri, 9 Feb 2024 06:52:25 +0000 (14:52 +0800)
committerKalle Valo <kvalo@kernel.org>
Mon, 12 Feb 2024 15:39:13 +0000 (17:39 +0200)
When there are OBSS that cannot interpret 26-tone RU transmissions,
we should disable 26-tone RU HE TB PPDU transmissions. So, add registers
accordingly.

Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://msgid.link/20240209065229.34515-8-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/mac.c
drivers/net/wireless/realtek/rtw89/mac.h
drivers/net/wireless/realtek/rtw89/mac_be.c

index 71e9b9d7b43068add48683768ba6f7b885c19594..8a1d3e6e81a9fafb4d2d62de5ed7796bb95029ec 100644 (file)
@@ -4619,6 +4619,7 @@ void rtw89_mac_set_he_obss_narrow_bw_ru(struct rtw89_dev *rtwdev,
                                        struct ieee80211_vif *vif)
 {
        struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
+       const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
        struct ieee80211_hw *hw = rtwdev->hw;
        bool tolerated = true;
        u32 reg;
@@ -4633,11 +4634,12 @@ void rtw89_mac_set_he_obss_narrow_bw_ru(struct rtw89_dev *rtwdev,
                          rtw89_mac_check_he_obss_narrow_bw_ru_iter,
                          &tolerated);
 
-       reg = rtw89_mac_reg_by_idx(rtwdev, R_AX_RXTRIG_TEST_USER_2, rtwvif->mac_idx);
+       reg = rtw89_mac_reg_by_idx(rtwdev, mac->narrow_bw_ru_dis.addr,
+                                  rtwvif->mac_idx);
        if (tolerated)
-               rtw89_write32_clr(rtwdev, reg, B_AX_RXTRIG_RU26_DIS);
+               rtw89_write32_clr(rtwdev, reg, mac->narrow_bw_ru_dis.mask);
        else
-               rtw89_write32_set(rtwdev, reg, B_AX_RXTRIG_RU26_DIS);
+               rtw89_write32_set(rtwdev, reg, mac->narrow_bw_ru_dis.mask);
 }
 
 void rtw89_mac_stop_ap(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
@@ -6206,6 +6208,10 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_ax = {
                .mask = B_AX_BFMEE_HT_NDPA_EN | B_AX_BFMEE_VHT_NDPA_EN |
                        B_AX_BFMEE_HE_NDPA_EN,
        },
+       .narrow_bw_ru_dis = {
+               .addr = R_AX_RXTRIG_TEST_USER_2,
+               .mask = B_AX_RXTRIG_RU26_DIS,
+       },
 
        .check_mac_en = rtw89_mac_check_mac_en_ax,
        .sys_init = sys_init_ax,
index b0a3b2a9eb5b3570d3694b7b903d428a1c0b9c32..c5ebac1d5990a204bd212d6a78923208f9176240 100644 (file)
@@ -898,6 +898,7 @@ struct rtw89_mac_gen_def {
 
        struct rtw89_reg_def muedca_ctrl;
        struct rtw89_reg_def bfee_ctrl;
+       struct rtw89_reg_def narrow_bw_ru_dis;
 
        int (*check_mac_en)(struct rtw89_dev *rtwdev, u8 band,
                            enum rtw89_mac_hwmod_sel sel);
index f4b51183e3f4ac0317e6d87c6f07283735e02891..6388c56a3c9013a8c8ee9676d935f9dfb8a9a288 100644 (file)
@@ -2400,6 +2400,10 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_be = {
                .mask = B_BE_BFMEE_HT_NDPA_EN | B_BE_BFMEE_VHT_NDPA_EN |
                        B_BE_BFMEE_HE_NDPA_EN | B_BE_BFMEE_EHT_NDPA_EN,
        },
+       .narrow_bw_ru_dis = {
+               .addr = R_BE_RXTRIG_TEST_USER_2,
+               .mask = B_BE_RXTRIG_RU26_DIS,
+       },
 
        .check_mac_en = rtw89_mac_check_mac_en_be,
        .sys_init = sys_init_be,