The series is to temporarily disable ASPM on NAPI poll, so the NIC can "regain" the performace loss when ASPM is enabled. The idea is from Realtek vendor driver's feature "dynamic ASPM" . We have "dynamic ASPM" mechanism in Ubuntu 22.04 LTS kernel for quite a while, and AFAIK it hasn't introduced any regression so far. A very similar issue was observed on Realtek wireless NIC, and it was resolved by disabling ASPM during NAPI poll. So in v8 and v9, we use the same approach, which is more straightforward, instead of toggling ASPM based on packet count. In addition to that, The series also enables ASPM on more systems where BIOS doesn't grant OS ASPM control. v8: https://lore.kernel.org/netdev/20230221023849.1906728-1-kai.heng.feng@xxxxxxxxxxxxx/ v7: https://lore.kernel.org/netdev/20211016075442.650311-1-kai.heng.feng@xxxxxxxxxxxxx/ v6: https://lore.kernel.org/netdev/20211007161552.272771-1-kai.heng.feng@xxxxxxxxxxxxx/ v5: https://lore.kernel.org/netdev/20210916154417.664323-1-kai.heng.feng@xxxxxxxxxxxxx/ v4: https://lore.kernel.org/netdev/20210827171452.217123-1-kai.heng.feng@xxxxxxxxxxxxx/ v3: https://lore.kernel.org/netdev/20210819054542.608745-1-kai.heng.feng@xxxxxxxxxxxxx/ v2: https://lore.kernel.org/netdev/20210812155341.817031-1-kai.heng.feng@xxxxxxxxxxxxx/ v1: https://lore.kernel.org/netdev/20210803152823.515849-1-kai.heng.feng@xxxxxxxxxxxxx/ Kai-Heng Feng (5): Revert "PCI/ASPM: Unexport pcie_aspm_support_enabled()" PCI/ASPM: Add pcie_aspm_capable() helper r8169: Consider chip-specific ASPM can be enabled on more cases r8169: Use spinlock to guard config register locking r8169: Disable ASPM while doing NAPI poll drivers/net/ethernet/realtek/r8169_main.c | 42 +++++++++++++++++++---- drivers/pci/pcie/aspm.c | 12 +++++++ include/linux/pci.h | 2 ++ 3 files changed, 50 insertions(+), 6 deletions(-) -- 2.34.1