From: Chin-Yen Lee The low-latency power-save optimization (LPS) was originally introduced specifically for RTL8852A to improve interactive application performance by exiting power-save during packet bursts. To extend this feature to RTL8852B and RTL8852BT, introduce a new flag "support_low_latency_lps" in chip info instead of hardcoding chip ID checks. Enable this capability for RTL8852A, RTL8852B, and RTL8852BT while explicitly disabling it for other supported chips. Signed-off-by: Chin-Yen Lee Signed-off-by: Ping-Ke Shih --- drivers/net/wireless/realtek/rtw89/core.c | 2 +- drivers/net/wireless/realtek/rtw89/core.h | 1 + drivers/net/wireless/realtek/rtw89/rtw8851b.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8852a.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8852b.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8852bt.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8852c.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8922a.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8922d.c | 1 + 9 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c index 58ee5efc3b5e..bfa31d365bef 100644 --- a/drivers/net/wireless/realtek/rtw89/core.c +++ b/drivers/net/wireless/realtek/rtw89/core.c @@ -3006,7 +3006,7 @@ static bool rtw89_core_proto_stats_can_lps(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif, enum rtw89_tfc_interval interval) { - if (rtwdev->chip->chip_id != RTL8852A) + if (!rtwdev->chip->support_low_latency_lps) return true; if (rtwvif->burst_active) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index 0d893b992a4a..cce2c2e48080 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -5837,6 +5837,7 @@ struct rtw89_chip_info { bool support_sar_by_ant; bool support_noise; bool support_fw_cmd_ofld; + bool support_low_latency_lps; bool ul_tb_waveform_ctrl; bool ul_tb_pwr_diff; bool rx_freq_from_ie; diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851b.c b/drivers/net/wireless/realtek/rtw89/rtw8851b.c index 272f4f4e1fb9..a7facfe96884 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8851b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8851b.c @@ -2647,6 +2647,7 @@ const struct rtw89_chip_info rtw8851b_chip_info = { .support_sar_by_ant = false, .support_noise = false, .support_fw_cmd_ofld = false, + .support_low_latency_lps = false, .ul_tb_waveform_ctrl = true, .ul_tb_pwr_diff = false, .rx_freq_from_ie = true, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c index 5207df4f9cd5..3b5e3c178440 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c @@ -2418,6 +2418,7 @@ const struct rtw89_chip_info rtw8852a_chip_info = { .support_sar_by_ant = false, .support_noise = true, .support_fw_cmd_ofld = false, + .support_low_latency_lps = true, .ul_tb_waveform_ctrl = false, .ul_tb_pwr_diff = false, .rx_freq_from_ie = true, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b.c b/drivers/net/wireless/realtek/rtw89/rtw8852b.c index d19388b86aca..138f499af677 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b.c @@ -1025,6 +1025,7 @@ const struct rtw89_chip_info rtw8852b_chip_info = { .support_sar_by_ant = true, .support_noise = false, .support_fw_cmd_ofld = false, + .support_low_latency_lps = true, .ul_tb_waveform_ctrl = true, .ul_tb_pwr_diff = false, .rx_freq_from_ie = true, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c index 23ad02d1fcd4..7306ae7db096 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c @@ -866,6 +866,7 @@ const struct rtw89_chip_info rtw8852bt_chip_info = { .support_sar_by_ant = true, .support_noise = false, .support_fw_cmd_ofld = false, + .support_low_latency_lps = true, .ul_tb_waveform_ctrl = true, .ul_tb_pwr_diff = false, .rx_freq_from_ie = true, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852c.c b/drivers/net/wireless/realtek/rtw89/rtw8852c.c index e556ba0c14a7..bdcce2e94f99 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852c.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852c.c @@ -3222,6 +3222,7 @@ const struct rtw89_chip_info rtw8852c_chip_info = { .support_sar_by_ant = true, .support_noise = false, .support_fw_cmd_ofld = true, + .support_low_latency_lps = false, .ul_tb_waveform_ctrl = false, .ul_tb_pwr_diff = true, .rx_freq_from_ie = false, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922a.c b/drivers/net/wireless/realtek/rtw89/rtw8922a.c index e48300287697..a3b5da979768 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8922a.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8922a.c @@ -3270,6 +3270,7 @@ const struct rtw89_chip_info rtw8922a_chip_info = { .support_sar_by_ant = true, .support_noise = false, .support_fw_cmd_ofld = false, + .support_low_latency_lps = false, .ul_tb_waveform_ctrl = false, .ul_tb_pwr_diff = false, .rx_freq_from_ie = false, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922d.c b/drivers/net/wireless/realtek/rtw89/rtw8922d.c index bdf9bcf2cf22..43d9df619260 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8922d.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8922d.c @@ -3791,6 +3791,7 @@ const struct rtw89_chip_info rtw8922d_chip_info = { .support_sar_by_ant = true, .support_noise = false, .support_fw_cmd_ofld = false, + .support_low_latency_lps = false, .ul_tb_waveform_ctrl = false, .ul_tb_pwr_diff = false, .rx_freq_from_ie = false, -- 2.25.1