Ok so it might not be related to that change then... but: ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 4.34 MBytes 36.4 Mbits/sec [ 5] 1.00-2.00 sec 7.11 MBytes 59.6 Mbits/sec [ 5] 2.00-3.00 sec 4.76 MBytes 39.9 Mbits/sec [ 5] 3.00-4.00 sec 4.13 MBytes 34.7 Mbits/sec [ 5] 4.00-5.00 sec 4.19 MBytes 35.1 Mbits/sec [ 5] 5.00-6.00 sec 5.70 MBytes 47.8 Mbits/sec [ 5] 6.00-7.00 sec 5.96 MBytes 50.0 Mbits/sec [ 5] 7.00-8.00 sec 4.17 MBytes 35.0 Mbits/sec [ 5] 8.00-9.00 sec 4.14 MBytes 34.7 Mbits/sec [ 5] 9.00-10.00 sec 4.08 MBytes 34.3 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 48.6 MBytes 40.8 Mbits/sec receiver The issue persists On Thu, Sep 24, 2020 at 6:24 PM Bjorn Helgaas <helgaas@xxxxxxxxxx> wrote: > > On Wed, Sep 23, 2020 at 11:36:00PM +0200, Ian Kumlien wrote: > > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=66ff14e59e8a > > > > "7d715a6c1ae5 ("PCI: add PCI Express ASPM support") added the ability for > > Linux to enable ASPM, but for some undocumented reason, it didn't enable > > ASPM on links where the downstream component is a PCIe-to-PCI/PCI-X Bridge. > > > > Remove this exclusion so we can enable ASPM on these links." > > ... > > > And all of this worked before the commit above. > > OK, really sorry, I got myself totally confused here, and I need to > start over from scratch. Correct me when I go off the rails. > > You're running 5.8.11+, and you get ~40 Mbit/s on the Intel I211 NIC. > Reverting 66ff14e59e8a ("PCI/ASPM: Allow ASPM on links to > PCIe-to-PCI/PCI-X Bridges") gets your bandwidth up to the 900+ Mbit/s > you expect. > > 66ff14e59e8a only makes a difference if you have a PCIe-to-PCI/PCI-X > Bridge (PCI_EXP_TYPE_PCI_BRIDGE) in your system. But from your lspci > and pci=earlydump output, I don't see any of those. The only bridges > I see are: > > [ 0.810346] pci 0000:00:01.2: [1022:1483] type 01 Root Port to [bus 01-07] > [ 0.810587] pci 0000:00:03.1: [1022:1483] type 01 Root Port to [bus 08] > [ 0.810587] pci 0000:00:03.2: [1022:1483] type 01 Root Port to [bus 09] > [ 0.810837] pci 0000:00:07.1: [1022:1484] type 01 Root Port to [bus 0a] > [ 0.811587] pci 0000:00:08.1: [1022:1484] type 01 Root Port to [bus 0b] > [ 0.812586] pci 0000:01:00.0: [1022:57ad] type 01 Upstream Port to [bus 02-07] > [ 0.812629] pci 0000:02:03.0: [1022:57a3] type 01 Downstream Port to [bus 03] > [ 0.813584] pci 0000:02:04.0: [1022:57a3] type 01 Downstream Port to [bus 04] > [ 0.814584] pci 0000:02:08.0: [1022:57a4] type 01 Downstream Port to [bus 05] > [ 0.815584] pci 0000:02:09.0: [1022:57a4] type 01 Downstream Port to [bus 06] > [ 0.815584] pci 0000:02:0a.0: [1022:57a4] type 01 Downstream Port to [bus 07] > > So I'm lost right off the bat. You have no PCI_EXP_TYPE_PCI_BRIDGE > device, so how can 66ff14e59e8a make a difference for you? > > Can you add a printk there, e.g., > > list_for_each_entry(child, &linkbus->devices, bus_list) { > if (pci_pcie_type(child) == PCI_EXP_TYPE_PCI_BRIDGE) { > + pci_info(child, "PCIe-to-PCI bridge, disabling ASPM\n"); > link->aspm_disable = ASPM_STATE_ALL; > break; > } > } >