Skip to content

Commit 9f08c77

Browse files
Ping-Ke ShihKalle Valo
authored andcommitted
wifi: rtw89: pci: correct interrupt mitigation register for 8852CE
To reduce interrupt count, configure mitigation register with thresholds of time and packet count. We missed that 8852CE uses different register address, so correct it. Then, interrupt counts down to 30,763 from 229,825 during stress test in 20 seconds. Signed-off-by: Ping-Ke Shih <[email protected]> Signed-off-by: Kalle Valo <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent d8872fb commit 9f08c77

File tree

6 files changed

+14
-1
lines changed

6 files changed

+14
-1
lines changed

drivers/net/wireless/realtek/rtw89/pci.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3620,6 +3620,7 @@ static void rtw89_pci_aspm_set(struct rtw89_dev *rtwdev, bool enable)
36203620

36213621
static void rtw89_pci_recalc_int_mit(struct rtw89_dev *rtwdev)
36223622
{
3623+
const struct rtw89_pci_info *info = rtwdev->pci_info;
36233624
struct rtw89_traffic_stats *stats = &rtwdev->stats;
36243625
enum rtw89_tfc_lv tx_tfc_lv = stats->tx_tfc_lv;
36253626
enum rtw89_tfc_lv rx_tfc_lv = stats->rx_tfc_lv;
@@ -3632,7 +3633,7 @@ static void rtw89_pci_recalc_int_mit(struct rtw89_dev *rtwdev)
36323633
FIELD_PREP(B_AX_RXTIMER_UNIT_MASK, AX_RXTIMER_UNIT_64US) |
36333634
FIELD_PREP(B_AX_RXTIMER_MATCH_MASK, 2048 / 64);
36343635

3635-
rtw89_write32(rtwdev, R_AX_INT_MIT_RX, val);
3636+
rtw89_write32(rtwdev, info->mit_addr, val);
36363637
}
36373638

36383639
static void rtw89_pci_link_cfg(struct rtw89_dev *rtwdev)

drivers/net/wireless/realtek/rtw89/pci.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,6 +812,13 @@
812812
#define B_AX_RXCOUNTER_MATCH_MASK GENMASK(15, 8)
813813
#define B_AX_RXTIMER_MATCH_MASK GENMASK(7, 0)
814814

815+
#define R_AX_INT_MIT_RX_V1 0x1184
816+
#define B_AX_RXMIT_RXP2_SEL_V1 BIT(19)
817+
#define B_AX_RXMIT_RXP1_SEL_V1 BIT(18)
818+
#define B_AX_MIT_RXTIMER_UNIT_MASK GENMASK(17, 16)
819+
#define B_AX_MIT_RXCOUNTER_MATCH_MASK GENMASK(15, 8)
820+
#define B_AX_MIT_RXTIMER_MATCH_MASK GENMASK(7, 0)
821+
815822
#define R_AX_DBG_ERR_FLAG 0x11C4
816823
#define B_AX_PCIE_RPQ_FULL BIT(29)
817824
#define B_AX_PCIE_RXQ_FULL BIT(28)
@@ -1241,6 +1248,7 @@ struct rtw89_pci_info {
12411248

12421249
u32 rpwm_addr;
12431250
u32 cpwm_addr;
1251+
u32 mit_addr;
12441252
u32 tx_dma_ch_mask;
12451253
const struct rtw89_pci_bd_idx_addr *bd_idx_addr_low_power;
12461254
const struct rtw89_pci_ch_dma_addr_set *dma_addr_set;

drivers/net/wireless/realtek/rtw89/rtw8851be.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ static const struct rtw89_pci_info rtw8851b_pci_info = {
4343

4444
.rpwm_addr = R_AX_PCIE_HRPWM,
4545
.cpwm_addr = R_AX_CPWM,
46+
.mit_addr = R_AX_INT_MIT_RX,
4647
.tx_dma_ch_mask = BIT(RTW89_TXCH_ACH4) | BIT(RTW89_TXCH_ACH5) |
4748
BIT(RTW89_TXCH_ACH6) | BIT(RTW89_TXCH_ACH7) |
4849
BIT(RTW89_TXCH_CH10) | BIT(RTW89_TXCH_CH11),

drivers/net/wireless/realtek/rtw89/rtw8852ae.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ static const struct rtw89_pci_info rtw8852a_pci_info = {
4444

4545
.rpwm_addr = R_AX_PCIE_HRPWM,
4646
.cpwm_addr = R_AX_CPWM,
47+
.mit_addr = R_AX_INT_MIT_RX,
4748
.tx_dma_ch_mask = 0,
4849
.bd_idx_addr_low_power = NULL,
4950
.dma_addr_set = &rtw89_pci_ch_dma_addr_set,

drivers/net/wireless/realtek/rtw89/rtw8852be.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ static const struct rtw89_pci_info rtw8852b_pci_info = {
4444

4545
.rpwm_addr = R_AX_PCIE_HRPWM,
4646
.cpwm_addr = R_AX_CPWM,
47+
.mit_addr = R_AX_INT_MIT_RX,
4748
.tx_dma_ch_mask = BIT(RTW89_TXCH_ACH4) | BIT(RTW89_TXCH_ACH5) |
4849
BIT(RTW89_TXCH_ACH6) | BIT(RTW89_TXCH_ACH7) |
4950
BIT(RTW89_TXCH_CH10) | BIT(RTW89_TXCH_CH11),

drivers/net/wireless/realtek/rtw89/rtw8852ce.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ static const struct rtw89_pci_info rtw8852c_pci_info = {
5353

5454
.rpwm_addr = R_AX_PCIE_HRPWM_V1,
5555
.cpwm_addr = R_AX_PCIE_CRPWM,
56+
.mit_addr = R_AX_INT_MIT_RX_V1,
5657
.tx_dma_ch_mask = 0,
5758
.bd_idx_addr_low_power = &rtw8852c_bd_idx_addr_low_power,
5859
.dma_addr_set = &rtw89_pci_ch_dma_addr_set_v1,

0 commit comments

Comments
 (0)