]> www.infradead.org Git - nvme.git/commit
net: dsa: mv88e6xxx: Fix failed probe due to unsupported C45 reads
authorAndrew Lunn <andrew@lunn.ch>
Mon, 29 Jan 2024 22:49:48 +0000 (23:49 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 31 Jan 2024 23:57:07 +0000 (15:57 -0800)
commit585b40e25dc9ff3d2b03d1495150540849009e5b
treedbdef79011cfa81c79cfcf278dc7ed75816d613b
parent5dee6d6923458e26966717f2a3eae7d09fc10bf6
net: dsa: mv88e6xxx: Fix failed probe due to unsupported C45 reads

Not all mv88e6xxx device support C45 read/write operations. Those
which do not return -EOPNOTSUPP. However, when phylib scans the bus,
it considers this fatal, and the probe of the MDIO bus fails, which in
term causes the mv88e6xxx probe as a whole to fail.

When there is no device on the bus for a given address, the pull up
resistor on the data line results in the read returning 0xffff. The
phylib core code understands this when scanning for devices on the
bus. C45 allows multiple devices to be supported at one address, so
phylib will perform a few reads at each address, so although thought
not the most efficient solution, it is a way to avoid fatal
errors. Make use of this as a minimal fix for stable to fix the
probing problems.

Follow up patches will rework how C45 operates to make it similar to
C22 which considers -ENODEV as a none-fatal, and swap mv88e6xxx to
using this.

Cc: stable@vger.kernel.org
Fixes: 743a19e38d02 ("net: dsa: mv88e6xxx: Separate C22 and C45 transactions")
Reported-by: Tim Menninger <tmenninger@purestorage.com>
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20240129224948.1531452-1-andrew@lunn.ch
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/mv88e6xxx/chip.c