Message ID | 36feb8c4-a0b6-422a-899c-e61f2e869dfe@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 4b5f82f6aaef3fa95cce52deb8510f55ddda6a71 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] r8169: enable ASPM L1/L1.1 from RTL8168h | expand |
Hello: This patch was applied to netdev/net-next.git (master) by Jakub Kicinski <kuba@kernel.org>: On Mon, 15 Nov 2021 21:17:56 +0100 you wrote: > With newer chip versions ASPM-related issues seem to occur only if > L1.2 is enabled. I have a test system with RTL8168h that gives a > number of rx_missed errors when running iperf and L1.2 is enabled. > With L1.2 disabled (and L1 + L1.1 active) everything is fine. > See also [0]. Can't test this, but L1 + L1.1 being active should be > sufficient to reach higher package power saving states. > > [...] Here is the summary with links: - [net-next] r8169: enable ASPM L1/L1.1 from RTL8168h https://git.kernel.org/netdev/net-next/c/4b5f82f6aaef You are awesome, thank you!
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index bbe21db20..6e46397f0 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -5271,12 +5271,6 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) if (rc) return rc; - /* Disable ASPM L1 as that cause random device stop working - * problems as well as full system hangs for some PCIe devices users. - */ - rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1); - tp->aspm_manageable = !rc; - /* enable device (incl. PCI PM wakeup and hotplug setup) */ rc = pcim_enable_device(pdev); if (rc < 0) { @@ -5319,6 +5313,17 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) tp->mac_version = chipset; + /* Disable ASPM L1 as that cause random device stop working + * problems as well as full system hangs for some PCIe devices users. + * Chips from RTL8168h partially have issues with L1.2, but seem + * to work fine with L1 and L1.1. + */ + if (tp->mac_version >= RTL_GIGA_MAC_VER_45) + rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2); + else + rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1); + tp->aspm_manageable = !rc; + tp->dash_type = rtl_check_dash(tp); tp->cp_cmd = RTL_R16(tp, CPlusCmd) & CPCMD_MASK;
With newer chip versions ASPM-related issues seem to occur only if L1.2 is enabled. I have a test system with RTL8168h that gives a number of rx_missed errors when running iperf and L1.2 is enabled. With L1.2 disabled (and L1 + L1.1 active) everything is fine. See also [0]. Can't test this, but L1 + L1.1 being active should be sufficient to reach higher package power saving states. [0] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1942830 Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> --- drivers/net/ethernet/realtek/r8169_main.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)