wifi: rtw89: pci: update interrupt mitigation register for 8922AE
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 10 Nov 2023 01:23:19 +0000 (09:23 +0800)
committerKalle Valo <kvalo@kernel.org>
Tue, 14 Nov 2023 10:22:42 +0000 (12:22 +0200)
To reduce interrupts, configure the mitigation setting of 8922AE when
bringing interface up, and then check situations to decide turning on or
off the function. With this, interrupt count decreases to 20,141 from
202,141 in period of 20 seconds.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20231110012319.12727-8-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/pci.c
drivers/net/wireless/realtek/rtw89/rtw8922ae.c

index 09de12a9e3c2aa2a61c99a0c78b3a103e63d2d24..0ca07ae63594ad47572a7bef8bbc32cae129b3e7 100644 (file)
@@ -3620,19 +3620,26 @@ static void rtw89_pci_aspm_set(struct rtw89_dev *rtwdev, bool enable)
 
 static void rtw89_pci_recalc_int_mit(struct rtw89_dev *rtwdev)
 {
+       enum rtw89_chip_gen chip_gen = rtwdev->chip->chip_gen;
        const struct rtw89_pci_info *info = rtwdev->pci_info;
        struct rtw89_traffic_stats *stats = &rtwdev->stats;
        enum rtw89_tfc_lv tx_tfc_lv = stats->tx_tfc_lv;
        enum rtw89_tfc_lv rx_tfc_lv = stats->rx_tfc_lv;
        u32 val = 0;
 
-       if (!rtwdev->scanning &&
-           (tx_tfc_lv >= RTW89_TFC_HIGH || rx_tfc_lv >= RTW89_TFC_HIGH))
+       if (rtwdev->scanning ||
+           (tx_tfc_lv < RTW89_TFC_HIGH && rx_tfc_lv < RTW89_TFC_HIGH))
+               goto out;
+
+       if (chip_gen == RTW89_CHIP_BE)
+               val = B_BE_PCIE_MIT_RX0P2_EN | B_BE_PCIE_MIT_RX0P1_EN;
+       else
                val = B_AX_RXMIT_RXP2_SEL | B_AX_RXMIT_RXP1_SEL |
                      FIELD_PREP(B_AX_RXCOUNTER_MATCH_MASK, RTW89_PCI_RXBD_NUM_MAX / 2) |
                      FIELD_PREP(B_AX_RXTIMER_UNIT_MASK, AX_RXTIMER_UNIT_64US) |
                      FIELD_PREP(B_AX_RXTIMER_MATCH_MASK, 2048 / 64);
 
+out:
        rtw89_write32(rtwdev, info->mit_addr, val);
 }
 
index 2a9ad5a254d82f38c2fc0bcc6d5d06a6415e2b54..414635d301aaee1698bd53f45d1f5375a48f52c9 100644 (file)
@@ -43,6 +43,7 @@ static const struct rtw89_pci_info rtw8922a_pci_info = {
 
        .rpwm_addr              = R_BE_PCIE_HRPWM,
        .cpwm_addr              = R_BE_PCIE_CRPWM,
+       .mit_addr               = R_BE_PCIE_MIT_CH_EN,
        .tx_dma_ch_mask         = 0,
        .bd_idx_addr_low_power  = NULL,
        .dma_addr_set           = &rtw89_pci_ch_dma_addr_set_be,