Commit 3c7bf5af21960 ("e1000e: Introduce private flag to disable K1")
disabled K1 by default on Meteor Lake and newer systems due to packet
loss observed on various platforms. However, disabling K1 caused an
increase in power consumption due to blocking PC10 state.

To mitigate this, reconfigure the PLL clock gate value so that K1 can
remain enabled without incurring the additional power consumption.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=220954
Fixes: 3c7bf5af21960 ("e1000e: Introduce private flag to disable K1")
Signed-off-by: Vitaly Lifshits <[email protected]>
---
v2: add comment for the PLL timeout value and revisit the commit message
v1: initial version
---
 drivers/net/ethernet/intel/e1000e/ich8lan.c | 6 ++++++
 drivers/net/ethernet/intel/e1000e/netdev.c  | 3 ---
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c 
b/drivers/net/ethernet/intel/e1000e/ich8lan.c
index 13841daba399..8e88aa9048da 100644
--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
@@ -1594,6 +1594,12 @@ static s32 e1000_check_for_copper_link_ich8lan(struct 
e1000_hw *hw)
                        phy_reg &= ~I217_PLL_CLOCK_GATE_MASK;
                        if (speed == SPEED_100 || speed == SPEED_10)
                                phy_reg |= 0x3E8;
+                       else if (hw->mac.type == e1000_pch_mtp ||
+                                hw->mac.type == e1000_pch_ptp)
+                               /* Increase PLL clock gate timeout to avoid
+                                * packet loss
+                                */
+                               phy_reg |= 0x1D5;
                        else
                                phy_reg |= 0xFA;
                        e1e_wphy_locked(hw, I217_PLL_CLOCK_GATE_REG, phy_reg);
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c 
b/drivers/net/ethernet/intel/e1000e/netdev.c
index 82d1d5fe51d5..8f0eb822610b 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -7755,9 +7755,6 @@ static int e1000_probe(struct pci_dev *pdev, const struct 
pci_device_id *ent)
        /* init PTP hardware clock */
        e1000e_ptp_init(adapter);
 
-       if (hw->mac.type >= e1000_pch_mtp)
-               adapter->flags2 |= FLAG2_DISABLE_K1;
-
        /* reset the hardware with the new settings */
        e1000e_reset(adapter);
 
-- 
2.34.1

Reply via email to