Re: [PATCH RFC net-next 2/5] net: phy: support indirect c45 access in get_phy_c45_ids()

Andrew Lunn
2022-03-24T15:10:12Z

On Thu, Mar 24, 2022 at 03:28:43PM +0100, Michael Walle wrote:
> Am 2022-03-23 20:39, schrieb Andrew Lunn:
> > > +static int mdiobus_probe_mmd_read(struct mii_bus *bus, int prtad,
> > > int devad,
> > > + u16 regnum)
> > > +{
> > > + int ret;
> > > +
> > > + /* For backwards compatibility, treat MDIOBUS_NO_CAP as c45
> > > capable */
> > > + if (bus->probe_capabilities == MDIOBUS_NO_CAP ||
> > > + bus->probe_capabilities >= MDIOBUS_C45)
> >
> > Maybe we should do the work and mark up those that are C45 capable. At
> > a quick count, see 16 of them.
>
> I guess you grepped for MII_ADDR_C45 and had a look who
> actually handled it correctly. Correct?

Yes.

> Let's say we mark these as either MDIOBUS_C45 or MDIOBUS_C45_C22,
> can we then drop MDIOBUS_NO_CAP and make MDIOBUS_C22 the default
> value (i.e. value 0) or do we have to go through all the mdio drivers
> and add bus->probe_capabilities = MDIOBUS_C22 ? Grepping for
> {of_,}mdiobus_register lists quite a few of them.

The minimum is marking those that support C45 with MDIOBUS_C45 or
MDIOBUS_C45_C22. We can then really trust it does C45. Those that
don't set probe_capabilities we assume are C22 only. That should be
enough for this problem.

FYI: Yesterday i started actually adding probe_capabilities values to
drivers. I did everything in driver/net/mdio. I will work on the rest
over the next few days and then post an RFC patchset.

Andrew