On Sat, Feb 03, 2024 at 05:25:23PM +0100, Andrew Lunn wrote: > On Fri, Feb 02, 2024 at 06:44:22PM +0100, Christian Marangi wrote: > > On Fri, Feb 02, 2024 at 02:35:11AM +0100, Andrew Lunn wrote: > > > > +static int qca807x_read_fiber_status(struct phy_device *phydev) > > > > +{ > > > > + int ss, err, lpa, old_link = phydev->link; > > > > + > > > > + /* Update the link, but return if there was an error */ > > > > + err = genphy_update_link(phydev); > > > > + if (err) > > > > + return err; > > > > + > > > > + /* why bother the PHY if nothing can have changed */ > > > > + if (phydev->autoneg == AUTONEG_ENABLE && old_link && phydev->link) > > > > + return 0; > > > > + > > > > + phydev->speed = SPEED_UNKNOWN; > > > > + phydev->duplex = DUPLEX_UNKNOWN; > > > > + phydev->pause = 0; > > > > + phydev->asym_pause = 0; > > > > + > > > > + if (phydev->autoneg == AUTONEG_ENABLE && phydev->autoneg_complete) { > > > > + lpa = phy_read(phydev, MII_LPA); > > > > + if (lpa < 0) > > > > + return lpa; > > > > + > > > > + linkmode_mod_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, > > > > + phydev->lp_advertising, lpa & LPA_LPACK); > > > > + linkmode_mod_bit(ETHTOOL_LINK_MODE_1000baseX_Full_BIT, > > > > + phydev->lp_advertising, lpa & LPA_1000XFULL); > > > > + linkmode_mod_bit(ETHTOOL_LINK_MODE_Pause_BIT, > > > > + phydev->lp_advertising, lpa & LPA_1000XPAUSE); > > > > + linkmode_mod_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, > > > > + phydev->lp_advertising, > > > > + lpa & LPA_1000XPAUSE_ASYM); > > > > + > > > > + phy_resolve_aneg_linkmode(phydev); > > > > + } > > > > > > This looks a lot like genphy_c37_read_status(). Can it be used? > > > > > > > Yes but I had to expand genphy_c37_read_status. Hope it will be OK. > > You can expand it, but please keep to what is defined within 802.3. We > don't want any vendor extensions in this common code. Vendor things > should be kept in the vendor driver. So you can call > genphy_c37_read_status() and then do any vendor specific fixups > needed. > Sure the expansion is just adding a bool signal if the link has changed or not (to make it possible to exit early and skip the additional vendor call...) I didn't add anything to the c37 function ifself. Anyway of from this, the revision is ready, just need to understand if Rob is ok with absolute or relative address for PHYs in the PHY package node. -- Ansuel