wifi: rtw89: fix CTS transmission issue with center frequency deviation
authorKuan-Chung Chen <damon.chen@realtek.com>
Tue, 23 Apr 2024 12:12:46 +0000 (20:12 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Mon, 29 Apr 2024 00:40:18 +0000 (08:40 +0800)
The CTS cannot be received by the peer due to center frequency
deviation. This issue can be solved by correct settings to
transmit proper CTS.

Signed-off-by: Kuan-Chung Chen <damon.chen@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://msgid.link/20240423121247.24714-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/mac.c
drivers/net/wireless/realtek/rtw89/mac_be.c

index 8b34044f7a8a512e4bf1f479b096a99935a0958e..b78b110ac7b27444b95d8fad64822367de033fd2 100644 (file)
@@ -3644,6 +3644,7 @@ static int set_host_rpr_ax(struct rtw89_dev *rtwdev)
 
 static int trx_init_ax(struct rtw89_dev *rtwdev)
 {
+       enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id;
        enum rtw89_qta_mode qta_mode = rtwdev->mac.qta_mode;
        int ret;
 
@@ -3687,6 +3688,10 @@ static int trx_init_ax(struct rtw89_dev *rtwdev)
                return ret;
        }
 
+       if (chip_id == RTL8852C)
+               rtw89_write32_clr(rtwdev, R_AX_RSP_CHK_SIG,
+                                 B_AX_RSP_STATIC_RTS_CHK_SERV_BW_EN);
+
        return 0;
 }
 
index f16467377eabafd379592b3ff008a834a3983046..934bdf3b398f1811a43a70ce62f2aae6839ed79f 100644 (file)
@@ -1751,6 +1751,7 @@ static int set_host_rpr_be(struct rtw89_dev *rtwdev)
 
 static int trx_init_be(struct rtw89_dev *rtwdev)
 {
+       enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id;
        enum rtw89_qta_mode qta_mode = rtwdev->mac.qta_mode;
        int ret;
 
@@ -1794,6 +1795,10 @@ static int trx_init_be(struct rtw89_dev *rtwdev)
                return ret;
        }
 
+       if (chip_id == RTL8922A)
+               rtw89_write32_clr(rtwdev, R_BE_RSP_CHK_SIG,
+                                 B_BE_RSP_STATIC_RTS_CHK_SERV_BW_EN);
+
        return 0;
 }