[PATCH net-next v2 0/9] Allow isolating PHY devices

From: Maxime Chevallier
Date: Fri Oct 04 2024 - 12:16:32 EST


Hello,

This is the V2 of a series to add isolation support for PHY devices.

As a remainder, this mode allows a PHY to set its MII lines in
high-impedance mode to avoid interferences on this bus.

So far, I've identified that :

- Marvell 88e1512 isolation works fine
- LXT973 claims to support isolation, but it's actually broken
- Marvell 88x3310 doesn't support isolation, by design
- Marvell 88e1111 claims to support isolation in GMII, RGMII, TBI
(untested) but doesn't in SGMII (tested).

Changes in V2 :

- Removed the loopback mode that was included in the first iteration
- Added phy_shutdown, to make sure we de-isolate the PHY when rebooting
- Changes the "PHY_NO_ISOLATE" flag to a phy driver ops. Testing showed
that some PHYs may or may not support isolation based on the
interface that's being used.
- Added isolation support reporting for the Marvell 88e1111 PHY.

V1 : https://lore.kernel.org/netdev/20240911212713.2178943-1-maxime.chevallier@xxxxxxxxxxx/

Maxime Chevallier (9):
net: phy: allow isolating PHY devices
net: phy: Introduce phy_shutdown for device quiescence.
net: phy: Allow PHY drivers to report isolation support
net: phy: lxt: Mark LXT973 PHYs as having a broken isolate mode
net: phy: marvell10g: 88x3310 and 88x3340 don't support isolate mode
net: phy: marvell: mv88e1111 doesn't support isolate in SGMII mode
net: phy: introduce ethtool_phy_ops to get and set phy configuration
net: ethtool: phy: allow reporting and setting the phy isolate status
netlink: specs: introduce phy-set command along with configurable
attributes

Documentation/netlink/specs/ethtool.yaml | 15 +++
Documentation/networking/ethtool-netlink.rst | 1 +
drivers/net/phy/lxt.c | 2 +
drivers/net/phy/marvell.c | 9 ++
drivers/net/phy/marvell10g.c | 2 +
drivers/net/phy/phy.c | 44 ++++++++
drivers/net/phy/phy_device.c | 101 +++++++++++++++++--
include/linux/ethtool.h | 8 ++
include/linux/phy.h | 42 ++++++++
include/uapi/linux/ethtool_netlink.h | 2 +
net/ethtool/netlink.c | 8 ++
net/ethtool/netlink.h | 1 +
net/ethtool/phy.c | 68 +++++++++++++
13 files changed, 297 insertions(+), 6 deletions(-)

--
2.46.1