From: Hsiao-Yung Chen 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 Signed-off-by: Ping-Ke Shih --- 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