]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtl8xxxu: Make RTL8192CU, RTL8723AU TX with 40 MHz width
authorBitterblue Smith <rtl8821cerfe2@gmail.com>
Thu, 20 Nov 2025 14:11:58 +0000 (16:11 +0200)
committerPing-Ke Shih <pkshih@realtek.com>
Fri, 21 Nov 2025 05:33:07 +0000 (13:33 +0800)
Set the required fields in the TX descriptor to allow these chips to
transmit with 40 MHz channel width when the access point supports it.

Tested only with RTL8192CU, but these settings are identical for
RTL8723AU.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/30d95228-69b2-48f9-8854-c98d2408c4d3@gmail.com
drivers/net/wireless/realtek/rtl8xxxu/core.c

index be8ee6c300341ea8b26564e9ec86d422bbdfaba4..7700e4074dc39274da033cdcfefb38a34dce09db 100644 (file)
@@ -5221,9 +5221,19 @@ rtl8xxxu_fill_txdesc_v1(struct ieee80211_hw *hw, struct ieee80211_hdr *hdr,
                tx_desc->txdw5 |= cpu_to_le32(TXDESC32_RETRY_LIMIT_ENABLE);
        }
 
-       if (ieee80211_is_data_qos(hdr->frame_control))
+       if (ieee80211_is_data_qos(hdr->frame_control)) {
                tx_desc->txdw4 |= cpu_to_le32(TXDESC32_QOS);
 
+               if (conf_is_ht40(&hw->conf)) {
+                       tx_desc->txdw4 |= cpu_to_le32(TXDESC_DATA_BW);
+
+                       if (conf_is_ht40_minus(&hw->conf))
+                               tx_desc->txdw4 |= cpu_to_le32(TXDESC_PRIME_CH_OFF_UPPER);
+                       else
+                               tx_desc->txdw4 |= cpu_to_le32(TXDESC_PRIME_CH_OFF_LOWER);
+               }
+       }
+
        if (short_preamble)
                tx_desc->txdw4 |= cpu_to_le32(TXDESC32_SHORT_PREAMBLE);