net: gianfar: simplify init_phy()
authorHeiner Kallweit <hkallweit1@gmail.com>
Thu, 6 Feb 2025 22:06:07 +0000 (23:06 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 8 Feb 2025 01:01:01 +0000 (17:01 -0800)
Use phy_set_max_speed() to simplify init_phy().

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/b863dcf7-31e8-45a1-a284-7075da958ff0@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/gianfar.c

index 435138f4699d2c8645d42ada392e3883e8014078..deb35b38c97666b4b2a193ce2f71bc41af76354f 100644 (file)
@@ -1647,20 +1647,11 @@ static void gfar_configure_serdes(struct net_device *dev)
  */
 static int init_phy(struct net_device *dev)
 {
-       __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
        struct gfar_private *priv = netdev_priv(dev);
        phy_interface_t interface = priv->interface;
        struct phy_device *phydev;
        struct ethtool_keee edata;
 
-       linkmode_set_bit_array(phy_10_100_features_array,
-                              ARRAY_SIZE(phy_10_100_features_array),
-                              mask);
-       linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, mask);
-       linkmode_set_bit(ETHTOOL_LINK_MODE_MII_BIT, mask);
-       if (priv->device_flags & FSL_GIANFAR_DEV_HAS_GIGABIT)
-               linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, mask);
-
        priv->oldlink = 0;
        priv->oldspeed = 0;
        priv->oldduplex = -1;
@@ -1675,9 +1666,8 @@ static int init_phy(struct net_device *dev)
        if (interface == PHY_INTERFACE_MODE_SGMII)
                gfar_configure_serdes(dev);
 
-       /* Remove any features not supported by the controller */
-       linkmode_and(phydev->supported, phydev->supported, mask);
-       linkmode_copy(phydev->advertising, phydev->supported);
+       if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_GIGABIT))
+               phy_set_max_speed(phydev, SPEED_100);
 
        /* Add support for flow control */
        phy_support_asym_pause(phydev);