Skip to content

Commit b063b19

Browse files
lunnkuba-moo
authored andcommitted
net: mdio: C22 is now optional, EOPNOTSUPP if not provided
When performing a C22 operation, check that the bus driver actually provides the methods, and return -EOPNOTSUPP if not. C45 only busses do exist, and in future their C22 methods will be NULL. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Michael Walle <michael@walle.cc> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 555d64c commit b063b19

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

drivers/net/phy/mdio_bus.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -766,7 +766,10 @@ int __mdiobus_read(struct mii_bus *bus, int addr, u32 regnum)
766766

767767
lockdep_assert_held_once(&bus->mdio_lock);
768768

769-
retval = bus->read(bus, addr, regnum);
769+
if (bus->read)
770+
retval = bus->read(bus, addr, regnum);
771+
else
772+
retval = -EOPNOTSUPP;
770773

771774
trace_mdio_access(bus, 1, addr, regnum, retval, retval);
772775
mdiobus_stats_acct(&bus->stats[addr], true, retval);
@@ -792,7 +795,10 @@ int __mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val)
792795

793796
lockdep_assert_held_once(&bus->mdio_lock);
794797

795-
err = bus->write(bus, addr, regnum, val);
798+
if (bus->write)
799+
err = bus->write(bus, addr, regnum, val);
800+
else
801+
err = -EOPNOTSUPP;
796802

797803
trace_mdio_access(bus, 0, addr, regnum, val, err);
798804
mdiobus_stats_acct(&bus->stats[addr], false, err);

0 commit comments

Comments
 (0)