Message ID | 20241225122804.10214-1-pkshih@realtek.com |
---|---|
State | New |
Headers | show |
Series | wifi: rtw89: pci: disable PCI completion timeout control | expand |
Ping-Ke Shih <pkshih@realtek.com> wrote: > From: Chin-Yen Lee <timlee@realtek.com> > > Realtek's chips follow suggestion of PCIe spec to design the max timeout of > PCI completion, but some PCIe host reply too slow to meet it and lead PCI > AER. Disable PCI completion timeout function via PCI configuration to > avoid the AER. > > Signed-off-by: Chin-Yen Lee <timlee@realtek.com> > Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> 1 patch(es) applied to rtw-next branch of rtw.git, thanks. f69ccbc50a12 wifi: rtw89: pci: disable PCI completion timeout control --- https://github.com/pkshih/rtw.git
diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c index c3a027735d0f..516160147191 100644 --- a/drivers/net/wireless/realtek/rtw89/pci.c +++ b/drivers/net/wireless/realtek/rtw89/pci.c @@ -4078,6 +4078,15 @@ static void rtw89_pci_l1ss_cfg(struct rtw89_dev *rtwdev) rtw89_pci_l1ss_set(rtwdev, true); } +static void rtw89_pci_cpl_timeout_cfg(struct rtw89_dev *rtwdev) +{ + struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv; + struct pci_dev *pdev = rtwpci->pdev; + + pcie_capability_set_word(pdev, PCI_EXP_DEVCTL2, + PCI_EXP_DEVCTL2_COMP_TMOUT_DIS); +} + static int rtw89_pci_poll_io_idle_ax(struct rtw89_dev *rtwdev) { int ret = 0; @@ -4291,6 +4300,7 @@ void rtw89_pci_basic_cfg(struct rtw89_dev *rtwdev, bool resume) rtw89_pci_disable_eq(rtwdev); rtw89_pci_filter_out(rtwdev); + rtw89_pci_cpl_timeout_cfg(rtwdev); rtw89_pci_link_cfg(rtwdev); rtw89_pci_l1ss_cfg(rtwdev); }