net: phy: move marking PHY on SFP module into SFP code
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thu, 3 Aug 2023 15:56:24 +0000 (16:56 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 5 Aug 2023 01:25:52 +0000 (18:25 -0700)
Move marking the PHY as being on a SFP module into the SFP code between
getting the PHY device (and thus initialising the phy_device structure)
and registering the discovered device.

This means that PHY drivers can use phy_on_sfp() in their match and
get_features methods.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://lore.kernel.org/r/E1qRaga-001vKt-8X@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/phy_device.c
drivers/net/phy/sfp.c

index e19c4fe..3e9909b 100644 (file)
@@ -1489,8 +1489,6 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
 
                if (phydev->sfp_bus_attached)
                        dev->sfp_bus = phydev->sfp_bus;
-               else if (dev->sfp_bus)
-                       phydev->is_on_sfp_module = true;
        }
 
        /* Some Ethernet drivers try to connect to a PHY device before
index d855a18..4ecfac2 100644 (file)
@@ -1763,6 +1763,9 @@ static int sfp_sm_probe_phy(struct sfp *sfp, int addr, bool is_c45)
                return PTR_ERR(phy);
        }
 
+       /* Mark this PHY as being on a SFP module */
+       phy->is_on_sfp_module = true;
+
        err = phy_device_register(phy);
        if (err) {
                phy_device_free(phy);