net: phylink: fix SGMII inband autoneg enable
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thu, 7 Jul 2022 09:20:02 +0000 (10:20 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 9 Jul 2022 03:19:19 +0000 (20:19 -0700)
When we are operating in SGMII inband mode, it implies that there is a
PHY connected, and the ethtool advertisement for autoneg applies to
the PHY, not the SGMII link. When in 1000base-X mode, then this applies
to the 802.3z link and needs to be applied to the PCS.

Fix this.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://lore.kernel.org/r/E1o9Ng2-005Qbe-3H@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/phylink.c

index 48f0b9b..9bd6932 100644 (file)
@@ -3040,7 +3040,9 @@ int phylink_mii_c22_pcs_config(struct mdio_device *pcs, unsigned int mode,
 
        /* Ensure ISOLATE bit is disabled */
        if (mode == MLO_AN_INBAND &&
-           linkmode_test_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, advertising))
+           (interface == PHY_INTERFACE_MODE_SGMII ||
+            interface == PHY_INTERFACE_MODE_QSGMII ||
+            linkmode_test_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, advertising)))
                bmcr = BMCR_ANENABLE;
        else
                bmcr = 0;