Commit 3c18e3c9a54e for kernel

commit 3c18e3c9a54e1239b72849502ca4737604bfbb46
Author: Aleksei Sviridkin <f@lex.la>
Date:   Thu Sep 3 12:36:43 2026 +0000

    net: dsa: mt7530: populate lpi_interfaces to fix EEE support

    phylink_create() decides once and for all that a MAC supports managed
    EEE, and it requires the tx_lpi ops plus non-empty lpi_capabilities and
    lpi_interfaces. mt753x_phylink_get_caps() leaves lpi_interfaces empty.

    So ever since the conversion to phylink managed EEE, ethtool has
    answered "Not supported" on every mt753x port, and phy_disable_eee()
    has locked userspace out of turning EEE on. That undoes what
    commit 06dfcd4098cf ("net: dsa: mt7530: fix enabling EEE on MT7531
    switch on all boards") arranged: EEE off by default, but reachable
    with ethtool.

    Leave the speeds above 1 Gbps out of both bitmaps. PMCR folds
    SPEED_2500 and SPEED_10000 onto PMCR_FORCE_SPEED_1000, so
    PMCR_FORCE_EEE1G would govern LPI on such a link, and that is
    unvalidated rather than known unsupported: MediaTek's SDK driver sets
    the EEE force bits for 100 Mbps and 1 Gbps only, and the unit of the
    wakeup timers is undocumented with the port clock at 2.5 times the
    rate.

    LPI stays off until userspace enables it, but the EEE advertisement of
    a PHY that advertises it out of reset comes back, since phylink stops
    force-clearing it.

    Fixes: 9cf21773f535 ("net: dsa: mt7530: convert to phylink managed EEE")
    Signed-off-by: Aleksei Sviridkin <f@lex.la>
    Link: https://patch.msgid.link/20260903123644.23800-2-f@lex.la
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>

diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
index 2b7be091c056..3e61eb3c2b1e 100644
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -3172,23 +3172,31 @@ static void mt753x_phylink_get_caps(struct dsa_switch *ds, int port,

 	config->mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE;

+	priv->info->mac_port_get_caps(ds, port, config);
+
 	/* The EN7528 GPHYs report EEE capability, but negotiating EEE with
 	 * common link partners (e.g. Realtek GbE NICs) results in an unstable
 	 * link with dropped frames. Leave the LPI capabilities empty so that
 	 * phylink disables EEE on these PHYs and refuses to enable it from
 	 * userspace.
 	 */
-	if (priv->id != ID_EN7528) {
+	if (priv->id != ID_EN7528 &&
+	    config->mac_capabilities & (MAC_100FD | MAC_1000FD)) {
 		u32 eeecr = mt7530_read(priv, MT753X_PMEEECR_P(port));

-		config->lpi_capabilities = MAC_100FD | MAC_1000FD | MAC_2500FD;
+		/* LPI above 1 Gbps is not supported */
+		config->lpi_capabilities = config->mac_capabilities &
+					   (MAC_100FD | MAC_1000FD);
+		phy_interface_copy(config->lpi_interfaces,
+				   config->supported_interfaces);
+		__clear_bit(PHY_INTERFACE_MODE_2500BASEX,
+			    config->lpi_interfaces);
+
 		/* tx_lpi_timer should be in microseconds. The time units for
 		 * LPI threshold are unspecified.
 		 */
 		config->lpi_timer_default = FIELD_GET(LPI_THRESH_MASK, eeecr);
 	}
-
-	priv->info->mac_port_get_caps(ds, port, config);
 }

 static int mt753x_pcs_validate(struct phylink_pcs *pcs,