]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: sparx5: configure serdes for 1000BASE-X in sparx5_port_init()
authorDaniel Machon <daniel.machon@microchip.com>
Wed, 6 May 2026 07:25:39 +0000 (09:25 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 7 May 2026 16:08:47 +0000 (09:08 -0700)
sparx5_port_init() only invokes sparx5_serdes_set() and the associated
shadow-device enable and low-speed device switch for SGMII and QSGMII.
On any port with a high-speed primary device (DEV5G/DEV10G/DEV25G)
configured for 1000BASE-X the serdes is therefore left uninitialized,
the DEV2G5 shadow is never enabled, and the port stays pointed at its
high-speed device rather than the DEV2G5. The PCS1G block looks
healthy in isolation, but no frames reach the link partner.

Add 1000BASE-X to the check so the same three steps run.

Note: the same issue might apply to 2500BASE-X, but that will,
eventually, be addressed in a separate commit.

Reported-by: Andrew Lunn <andrew@lunn.ch>
Fixes: 946e7fd5053a ("net: sparx5: add port module support")
Signed-off-by: Daniel Machon <daniel.machon@microchip.com>
Link: https://patch.msgid.link/20260506-misc-fixes-sparx5-lan969x-v2-4-fb236aa96908@microchip.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/microchip/sparx5/sparx5_port.c

index 04bc8fffaf961e014e3c64fe815f9900ac667026..62c49893de3c376ea6274c8101bb8f6d97c5abef 100644 (file)
@@ -1128,7 +1128,8 @@ int sparx5_port_init(struct sparx5 *sparx5,
                DEV2G5_PCS1G_SD_CFG(port->portno));
 
        if (conf->portmode == PHY_INTERFACE_MODE_QSGMII ||
-           conf->portmode == PHY_INTERFACE_MODE_SGMII) {
+           conf->portmode == PHY_INTERFACE_MODE_SGMII ||
+           conf->portmode == PHY_INTERFACE_MODE_1000BASEX) {
                err = sparx5_serdes_set(sparx5, port, conf);
                if (err)
                        return err;