net: phylink: handle NA interface mode in phylink_fwnode_phy_connect()
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Fri, 19 Nov 2021 16:28:06 +0000 (16:28 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 22 Nov 2021 13:16:26 +0000 (13:16 +0000)
Commit 4904b6ea1f9db ("net: phy: phylink: Use PHY device interface if
N/A") introduced handling for the phy interface mode where this is not
known at phylink creation time. This was never added to the OF/fwnode
paths, but is necessary when the phy is present in DT, but the phy-mode
is not specified.

Add this handling.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/phylink.c

index 2d201a7..3603c02 100644 (file)
@@ -1325,7 +1325,8 @@ static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy,
        mutex_unlock(&phy->lock);
 
        phylink_dbg(pl,
-                   "phy: setting supported %*pb advertising %*pb\n",
+                   "phy: %s setting supported %*pb advertising %*pb\n",
+                   phy_modes(interface),
                    __ETHTOOL_LINK_MODE_MASK_NBITS, pl->supported,
                    __ETHTOOL_LINK_MODE_MASK_NBITS, phy->advertising);
 
@@ -1443,6 +1444,12 @@ int phylink_fwnode_phy_connect(struct phylink *pl,
        if (!phy_dev)
                return -ENODEV;
 
+       /* Use PHY device/driver interface */
+       if (pl->link_interface == PHY_INTERFACE_MODE_NA) {
+               pl->link_interface = phy_dev->interface;
+               pl->link_config.interface = pl->link_interface;
+       }
+
        ret = phy_attach_direct(pl->netdev, phy_dev, flags,
                                pl->link_interface);
        if (ret) {