public inbox for linux-wireless@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH rtw-next 0/3] wifi: rtw89: update hardware settings to fix interoperability
@ 2026-04-24  7:25 Ping-Ke Shih
  2026-04-24  7:25 ` [PATCH rtw-next 1/3] wifi: rtw89: pci: no need to wait CLK ready for RTL8922DE Ping-Ke Shih
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Ping-Ke Shih @ 2026-04-24  7:25 UTC (permalink / raw)
  To: linux-wireless; +Cc: dian_syuan0116

First is to clear CLK ready bit to prevent unstable for certain platforms.
The second one is to fix low throughput problem in AP mode. The last one
is related beamforming that CSI can't reply on 160MHz bandwidth for WiFi
6 chips.

Dian-Syuan Yang (2):
  wifi: rtw89: disable HTC field in AP mode
  wifi: rtw89: disable CSI STBC for VHT 160MHz

Ping-Ke Shih (1):
  wifi: rtw89: pci: no need to wait CLK ready for RTL8922DE

 drivers/net/wireless/realtek/rtw89/core.c   |  4 ++++
 drivers/net/wireless/realtek/rtw89/mac_be.c |  4 ++++
 drivers/net/wireless/realtek/rtw89/pci.h    |  2 ++
 drivers/net/wireless/realtek/rtw89/pci_be.c | 12 ++++++++++++
 4 files changed, 22 insertions(+)


base-commit: fa489a77e3267e05df95db96ba98e141ec07cbd9
-- 
2.25.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH rtw-next 1/3] wifi: rtw89: pci: no need to wait CLK ready for RTL8922DE
  2026-04-24  7:25 [PATCH rtw-next 0/3] wifi: rtw89: update hardware settings to fix interoperability Ping-Ke Shih
@ 2026-04-24  7:25 ` Ping-Ke Shih
  2026-04-24  7:25 ` [PATCH rtw-next 2/3] wifi: rtw89: disable HTC field in AP mode Ping-Ke Shih
  2026-04-24  7:25 ` [PATCH rtw-next 3/3] wifi: rtw89: disable CSI STBC for VHT 160MHz Ping-Ke Shih
  2 siblings, 0 replies; 4+ messages in thread
From: Ping-Ke Shih @ 2026-04-24  7:25 UTC (permalink / raw)
  To: linux-wireless; +Cc: dian_syuan0116

The bit is to wait for CLK ready when entering PCIE L1SS. However, a
certain host might not enable CLK for a situation, causing device state
stuck and trigger PCIE SER. Unset this bit as default like earlier chips.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/pci.h    |  2 ++
 drivers/net/wireless/realtek/rtw89/pci_be.c | 12 ++++++++++++
 2 files changed, 14 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtw89/pci.h b/drivers/net/wireless/realtek/rtw89/pci.h
index e7da37b9da7d..d0d1e2b99698 100644
--- a/drivers/net/wireless/realtek/rtw89/pci.h
+++ b/drivers/net/wireless/realtek/rtw89/pci.h
@@ -33,6 +33,8 @@
 #define RAC_REG_REV2			0x1B
 #define BAC_CMU_EN_DLY_MASK		GENMASK(15, 12)
 #define PCIE_DPHY_DLY_25US		0x1
+#define RAC_ANA14			0x14
+#define EIEOS_L1SS_WAIT_CLKRDY		BIT(2)
 #define RAC_ANA19			0x19
 #define B_PCIE_BIT_RD_SEL		BIT(2)
 #define RAC_REG_FLD_0			0x1D
diff --git a/drivers/net/wireless/realtek/rtw89/pci_be.c b/drivers/net/wireless/realtek/rtw89/pci_be.c
index dfffec1ff3c7..473d491eb3f4 100644
--- a/drivers/net/wireless/realtek/rtw89/pci_be.c
+++ b/drivers/net/wireless/realtek/rtw89/pci_be.c
@@ -83,6 +83,17 @@ static void _patch_pcie_power_wake_be(struct rtw89_dev *rtwdev, bool power_up)
 		rtw89_write32_clr(rtwdev, R_BE_HCI_OPT_CTRL, BIT_WAKE_CTRL_V1);
 }
 
+static void _patch_pre_init_be(struct rtw89_dev *rtwdev)
+{
+	struct rtw89_hal *hal = &rtwdev->hal;
+
+	if (!(rtwdev->chip->chip_id == RTL8922D && hal->cid == RTL8922D_CID7090))
+		return;
+
+	rtw89_write16_clr(rtwdev, R_RAC_DIRECT_OFFSET_BE_LANE0_G2 +
+				  RAC_ANA14 * RAC_MULT, EIEOS_L1SS_WAIT_CLKRDY);
+}
+
 static void rtw89_pci_set_io_rcy_be(struct rtw89_dev *rtwdev)
 {
 	const struct rtw89_pci_info *info = rtwdev->pci_info;
@@ -475,6 +486,7 @@ static int rtw89_pci_ops_mac_pre_init_be(struct rtw89_dev *rtwdev)
 
 	rtw89_pci_set_io_rcy_be(rtwdev);
 	_patch_pcie_power_wake_be(rtwdev, true);
+	_patch_pre_init_be(rtwdev);
 	rtw89_pci_ctrl_wpdma_pcie_be(rtwdev, false);
 	rtw89_pci_ctrl_trxdma_pcie_be(rtwdev, MAC_AX_PCIE_DISABLE,
 				      MAC_AX_PCIE_DISABLE, MAC_AX_PCIE_DISABLE);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH rtw-next 2/3] wifi: rtw89: disable HTC field in AP mode
  2026-04-24  7:25 [PATCH rtw-next 0/3] wifi: rtw89: update hardware settings to fix interoperability Ping-Ke Shih
  2026-04-24  7:25 ` [PATCH rtw-next 1/3] wifi: rtw89: pci: no need to wait CLK ready for RTL8922DE Ping-Ke Shih
@ 2026-04-24  7:25 ` Ping-Ke Shih
  2026-04-24  7:25 ` [PATCH rtw-next 3/3] wifi: rtw89: disable CSI STBC for VHT 160MHz Ping-Ke Shih
  2 siblings, 0 replies; 4+ messages in thread
From: Ping-Ke Shih @ 2026-04-24  7:25 UTC (permalink / raw)
  To: linux-wireless; +Cc: dian_syuan0116

From: Dian-Syuan Yang <dian_syuan0116@realtek.com>

Disable HE QoS HTC field when operating in AP mode to resolve
interoperability issues with some stations.

Signed-off-by: Dian-Syuan Yang <dian_syuan0116@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/core.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
index 70feab97dccb..ca3f8e356434 100644
--- a/drivers/net/wireless/realtek/rtw89/core.c
+++ b/drivers/net/wireless/realtek/rtw89/core.c
@@ -931,6 +931,7 @@ __rtw89_core_tx_check_he_qos_htc(struct rtw89_dev *rtwdev,
 				 enum btc_pkt_type pkt_type)
 {
 	struct rtw89_sta_link *rtwsta_link = tx_req->rtwsta_link;
+	struct ieee80211_vif *vif = tx_req->vif;
 	struct sk_buff *skb = tx_req->skb;
 	struct ieee80211_hdr *hdr = (void *)skb->data;
 	struct ieee80211_link_sta *link_sta;
@@ -962,6 +963,9 @@ __rtw89_core_tx_check_he_qos_htc(struct rtw89_dev *rtwdev,
 	if (rtwsta_link && rtwsta_link->ra_report.might_fallback_legacy)
 		return false;
 
+	if (vif->type == NL80211_IFTYPE_AP)
+		return false;
+
 	return true;
 }
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH rtw-next 3/3] wifi: rtw89: disable CSI STBC for VHT 160MHz
  2026-04-24  7:25 [PATCH rtw-next 0/3] wifi: rtw89: update hardware settings to fix interoperability Ping-Ke Shih
  2026-04-24  7:25 ` [PATCH rtw-next 1/3] wifi: rtw89: pci: no need to wait CLK ready for RTL8922DE Ping-Ke Shih
  2026-04-24  7:25 ` [PATCH rtw-next 2/3] wifi: rtw89: disable HTC field in AP mode Ping-Ke Shih
@ 2026-04-24  7:25 ` Ping-Ke Shih
  2 siblings, 0 replies; 4+ messages in thread
From: Ping-Ke Shih @ 2026-04-24  7:25 UTC (permalink / raw)
  To: linux-wireless; +Cc: dian_syuan0116

From: Dian-Syuan Yang <dian_syuan0116@realtek.com>

Fix interoperability problem where CSI feedback with STBC enabled at
VHT 160MHz BW cannot be properly decoded by certain APs, causing CSI
reports to be rejected. This problem is specific to Wi-Fi 7 chips,
as Wi-Fi 6 defaults to 20MHz CSI BW. Therefore, disable STBC encoding
for CSI transmission in VHT 160MHz mode to ensure CSI feedback is
accepted by these APs and maintain smooth throughput.

Signed-off-by: Dian-Syuan Yang <dian_syuan0116@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/mac_be.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtw89/mac_be.c b/drivers/net/wireless/realtek/rtw89/mac_be.c
index 39a28fd27412..4d61313a2a84 100644
--- a/drivers/net/wireless/realtek/rtw89/mac_be.c
+++ b/drivers/net/wireless/realtek/rtw89/mac_be.c
@@ -2750,6 +2750,10 @@ static int rtw89_mac_set_csi_para_reg_be(struct rtw89_dev *rtwdev,
 		sound_dim = min(sound_dim, t);
 	}
 
+	/* Disable stbc_en in VHT 160MHz to avoid IOT issues with certain APs */
+	if (link_sta->vht_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ)
+		stbc_en = 0;
+
 	nc = min(nc, sound_dim);
 	nr = min(nr, sound_dim);
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-04-24  7:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-24  7:25 [PATCH rtw-next 0/3] wifi: rtw89: update hardware settings to fix interoperability Ping-Ke Shih
2026-04-24  7:25 ` [PATCH rtw-next 1/3] wifi: rtw89: pci: no need to wait CLK ready for RTL8922DE Ping-Ke Shih
2026-04-24  7:25 ` [PATCH rtw-next 2/3] wifi: rtw89: disable HTC field in AP mode Ping-Ke Shih
2026-04-24  7:25 ` [PATCH rtw-next 3/3] wifi: rtw89: disable CSI STBC for VHT 160MHz Ping-Ke Shih

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox