[PATCH rtw-next 01/14] wifi: rtw89: 8922de: add low latency quirk for Valve device

Ping-Ke Shih <[email protected]>
Newsgroups org.kernel.vger.linux-wireless
Message-ID <[email protected]>
From: Hsiao-Yung Chen <[email protected]>

Add RTW89_QUIRK_LOW_LATENCY to the rtw89_quirks enum for
latency-sensitive platforms. When set, the RA report handler skips
computing max_agg_wait and leaves it at its default of zero, which
makes rtw89_core_txq_agg_wait() bail out early, so frames are
dispatched immediately instead of being held to build an aggregate,
trading throughput for lower latency.

Apply the quirk for the Valve device (SSID 0x1e44:0x1400) on the
8922DE, and add RTW89_CUSTID_VALVE for that customer ID.

Signed-off-by: Hsiao-Yung Chen <[email protected]>
Signed-off-by: Ping-Ke Shih <[email protected]>
---
 drivers/net/wireless/realtek/rtw89/core.h      | 2 ++
 drivers/net/wireless/realtek/rtw89/phy.c       | 3 ++-
 drivers/net/wireless/realtek/rtw89/rtw8922de.c | 8 +++++++-
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h
index 2b21d969ece7..b1a0103aaf0c 100644
--- a/drivers/net/wireless/realtek/rtw89/core.h
+++ b/drivers/net/wireless/realtek/rtw89/core.h
@@ -6465,6 +6465,7 @@ enum rtw89_quirks {
 	RTW89_QUIRK_THERMAL_PROT_110C,
 	RTW89_QUIRK_HW_INFO_SYSFS,
 	RTW89_QUIRK_DISABLE_2GHZ,
+	RTW89_QUIRK_LOW_LATENCY,
 
 	NUM_OF_RTW89_QUIRKS,
 };
@@ -6479,6 +6480,7 @@ enum rtw89_custid {
 	RTW89_CUSTID_AMD = 6,
 	RTW89_CUSTID_FUJITSU = 7,
 	RTW89_CUSTID_DELL = 8,
+	RTW89_CUSTID_VALVE, /* driver only */
 };
 
 enum rtw89_pkt_drop_sel {
diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c
index c78107e92206..ebf6ecf08c35 100644
--- a/drivers/net/wireless/realtek/rtw89/phy.c
+++ b/drivers/net/wireless/realtek/rtw89/phy.c
@@ -3345,7 +3345,8 @@ static void __rtw89_phy_c2h_ra_rpt_iter(struct rtw89_sta_link *rtwsta_link,
 		*changed = true;
 	}
 
-	rtwsta_link->max_agg_wait = link_sta->agg.max_rc_amsdu_len / 1500 - 1;
+	if (!test_bit(RTW89_QUIRK_LOW_LATENCY, rtwdev->quirks))
+		rtwsta_link->max_agg_wait = link_sta->agg.max_rc_amsdu_len / 1500 - 1;
 }
 
 static void rtw89_phy_c2h_ra_rpt_iter(void *data, struct ieee80211_sta *sta)
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922de.c b/drivers/net/wireless/realtek/rtw89/rtw8922de.c
index a71e41f28544..d0dede477fb4 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8922de.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8922de.c
@@ -9,6 +9,12 @@
 #include "reg.h"
 #include "rtw8922d.h"
 
+static const struct rtw89_pci_ssid_quirk rtw8922de_pci_ssid_quirks[] = {
+	{RTW89_PCI_SSID(PCI_VENDOR_ID_REALTEK, 0x892D, 0x1E44, 0x1400, VALVE),
+		.bitmap = BIT(RTW89_QUIRK_LOW_LATENCY)},
+	{},
+};
+
 static const struct rtw89_pci_info rtw8922d_pci_info = {
 	.gen_def		= &rtw89_pci_gen_be,
 	.isr_def		= &rtw89_pci_isr_be_v1,
@@ -66,7 +72,7 @@ static const struct rtw89_pci_info rtw8922d_pci_info = {
 	.disable_intr		= rtw89_pci_disable_intr_v3,
 	.recognize_intrs	= rtw89_pci_recognize_intrs_v3,
 
-	.ssid_quirks		= NULL,
+	.ssid_quirks		= rtw8922de_pci_ssid_quirks,
 };
 
 static const struct rtw89_driver_info rtw89_8922de_vs_info = {
-- 
2.25.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.