Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Andrew Lunn and committed by
Jakub Kicinski
b063b192 555d64c6

+8 -2
+8 -2
drivers/net/phy/mdio_bus.c
··· 766 766 767 767 lockdep_assert_held_once(&bus->mdio_lock); 768 768 769 - retval = bus->read(bus, addr, regnum); 769 + if (bus->read) 770 + retval = bus->read(bus, addr, regnum); 771 + else 772 + retval = -EOPNOTSUPP; 770 773 771 774 trace_mdio_access(bus, 1, addr, regnum, retval, retval); 772 775 mdiobus_stats_acct(&bus->stats[addr], true, retval); ··· 795 792 796 793 lockdep_assert_held_once(&bus->mdio_lock); 797 794 798 - err = bus->write(bus, addr, regnum, val); 795 + if (bus->write) 796 + err = bus->write(bus, addr, regnum, val); 797 + else 798 + err = -EOPNOTSUPP; 799 799 800 800 trace_mdio_access(bus, 0, addr, regnum, val, err); 801 801 mdiobus_stats_acct(&bus->stats[addr], false, err);