Message ID | 20240203-unify-c22-c45-scan-error-handling-v1-2-8aa9fa3c4fca@lunn.ch (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Unify C22 and C45 error handling during bus enumeration | expand |
On 2/3/2024 12:52 PM, Andrew Lunn wrote: > MDIO bus drivers can return -ENODEV when they know the bus does not > have a device at the given address, e.g. because of hardware > limitation. One such limitation is that the bus does not support C22 > or C45 at all. This is more efficient than returning 0xffff, since it > immediately stops the probing on the given address, where as further > reads can be made when 0xffff is returned. > > Signed-off-by: Andrew Lunn <andrew@lunn.ch> > --- > drivers/net/dsa/mv88e6xxx/chip.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c > index 6eec2e4aa031..ce4e4bdf475d 100644 > --- a/drivers/net/dsa/mv88e6xxx/chip.c > +++ b/drivers/net/dsa/mv88e6xxx/chip.c > @@ -3633,7 +3633,7 @@ static int mv88e6xxx_mdio_read(struct mii_bus *bus, int phy, int reg) > int err; > > if (!chip->info->ops->phy_read) > - return -EOPNOTSUPP; > + return -ENODEV; Still not sure this is the right way to do do it here. > > mv88e6xxx_reg_lock(chip); > err = chip->info->ops->phy_read(chip, bus, phy, reg, &val); > @@ -3659,7 +3659,7 @@ static int mv88e6xxx_mdio_read_c45(struct mii_bus *bus, int phy, int devad, > int err; > > if (!chip->info->ops->phy_read_c45) > - return 0xffff; > + return -ENODEV; Whereas here it makes sense to me to switch to -ENODEV.
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index 6eec2e4aa031..ce4e4bdf475d 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -3633,7 +3633,7 @@ static int mv88e6xxx_mdio_read(struct mii_bus *bus, int phy, int reg) int err; if (!chip->info->ops->phy_read) - return -EOPNOTSUPP; + return -ENODEV; mv88e6xxx_reg_lock(chip); err = chip->info->ops->phy_read(chip, bus, phy, reg, &val); @@ -3659,7 +3659,7 @@ static int mv88e6xxx_mdio_read_c45(struct mii_bus *bus, int phy, int devad, int err; if (!chip->info->ops->phy_read_c45) - return 0xffff; + return -ENODEV; mv88e6xxx_reg_lock(chip); err = chip->info->ops->phy_read_c45(chip, bus, phy, devad, reg, &val);
MDIO bus drivers can return -ENODEV when they know the bus does not have a device at the given address, e.g. because of hardware limitation. One such limitation is that the bus does not support C22 or C45 at all. This is more efficient than returning 0xffff, since it immediately stops the probing on the given address, where as further reads can be made when 0xffff is returned. Signed-off-by: Andrew Lunn <andrew@lunn.ch> --- drivers/net/dsa/mv88e6xxx/chip.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)