Messages in this thread | | | Date | Wed, 2 Jun 2021 04:19:43 +0200 | From | Andrew Lunn <> | Subject | Re: [RFC net-next 0/2] Introduce MDIO probe order C45 over C22 |
| |
> Yeah, you're right. Thanks for pointing that out. It should be: > > diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c > index 1539ea021ac0..73bfde770f2d 100644 > --- a/drivers/net/phy/phy_device.c > +++ b/drivers/net/phy/phy_device.c > @@ -862,11 +862,22 @@ struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45) > c45_ids.mmds_present = 0; > memset(c45_ids.device_ids, 0xff, sizeof(c45_ids.device_ids)); > > - if (is_c45) > + if (is_c45) { > r = get_phy_c45_ids(bus, addr, &c45_ids); > - else > + } else { > r = get_phy_c22_id(bus, addr, &phy_id); > > + if (phy_id == 0) { > + r = get_phy_c45_ids(bus, addr, &c45_ids); > + if (r == -ENOTSUPP || r == -ENODEV) > + return phy_device_create(bus, addr, phy_id, > + false, &c45_ids); > + else > + return phy_device_create(bus, addr, phy_id, > + true, &c45_ids);
Still not correct. Think about when get_phy_c22_id() returns an error. Walk through all the different code paths and check they do the right thing. It is actually a lot more complex than what is shown here. Think about all the different types of PHYs and all the different types of MDIO bus drivers.
Andrew
| |