On 6/1/2025 4:16 PM, ValdikSS wrote:
On 01.06.2025 1:04 PM, Lifshits, Vitaly wrote:
Hello, are there any updates on upstreaming this change?
If there haven't been much testing, could it be put behind the module
option and disabled by default?
Hello,
We've decided to pursue a different solution to the issue.
The original workaround may negatively impact system power
consumption, as a low LTR value can prevent the CPU from entering
deeper power states.
As an alternative, and for testing purposes only, could you please
check whether the following changes resolve the issue on your system?
With this patch, the speed is fast only after suspend/resume cycle.
If I just power on the PC, the speed is capped. If I unload the module
with the previous patch and insert this one, the speed is also capped
and another suspend/resume cycle is required.
After suspend/resume, the speed is good.
Tested on 6.14.8, with the igc code from 6.14.9.
Ok, so I believe that adding this to igc_probe should work:
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -7074,6 +7074,8 @@ static int igc_probe(struct pci_dev *pdev,
const struct igc_info *ei = igc_info_tbl[ent->driver_data];
int err;
+ pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
+
err = pci_enable_device_mem(pdev);
if (err)
return err;
@@ -7498,6 +7500,8 @@ static int __igc_resume(struct device *dev, bool rpm)
pci_enable_wake(pdev, PCI_D3hot, 0);
pci_enable_wake(pdev, PCI_D3cold, 0);
+ pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
+
if (igc_init_interrupt_scheme(adapter, true)) {
netdev_err(netdev, "Unable to allocate memory for
queues\n");
return -ENOMEM;
@@ -7623,6 +7627,7 @@ static pci_ers_result_t igc_io_slot_reset(struct
pci_dev *pdev)
pci_enable_wake(pdev, PCI_D3hot, 0);
pci_enable_wake(pdev, PCI_D3cold, 0);
+ pci_disable_link_state_locked(pdev, PCIE_LINK_STATE_L1_2);
/* In case of PCI error, adapter loses its HW address
* so we should re-assign it here.
*/
I think that if this patch works, we can start working on upstreaming it.