On Tue, Jan 03, 2023 at 04:48:59PM +0100, Andrew Lunn wrote: > > Since clause 45 PHYs are identified by the "ethernet-phy-ieee802.3-c45" > > compatible string (otherwise they are C22), then a PHY which is not > > described in the device tree can only be C22. So this is why > > ds->slave_mii_bus only deals with clause 22 methods, and the true reason > > behind the comment above. > > > > But actually this premise is no longer true since Luiz' commit > > fe7324b93222 ("net: dsa: OF-ware slave_mii_bus"), which introduced the > > strange concept of an "OF-aware helper for internal PHYs which are not > > described in the device tree". After his patch, it is possible to have > > something like this: > > > > ethernet-switch { > > ethernet-ports { > > port@1 { > > reg = <1>; > > }; > > }; > > > > mdio { > > ethernet-phy@1 { > > compatible = "ethernet-phy-ieee802.3-c45" > > reg = <1>; > > }; > > }; > > }; > > > > As you can see, this is a clause 45 internal PHY which lacks a > > phy-handle, so its bus must be put in ds->slave_mii_bus in order for > > dsa_slave_phy_connect() to see it without that phy-handle (based on the > > port number matching with the PHY number). After Luiz' patch, this kind > > of device tree is possible, and it invalidates the assumption about > > ds->slave_mii_bus only driving C22 PHYs. > > My memory is hazy, but i think at the time i wrote these patches, > there was no DSA driver which made use of ds->slave_mii_bus with > C45. So i took the short cut of only supporting C22. Actually I believe that in v1 you did extend ds->ops with C45 methods, but it's me who told you to remove them: https://patchwork.kernel.org/project/netdevbpf/patch/20220508153049.427227-10-andrew@xxxxxxx/#24852813 > > Those DSA drivers which do support C45 all register their bus directly > with the MDIO core. And rightfully so. IMHO, letting DSA allocate ds->slave_mii_bus out of driver writer sheer convenience (a secondary purpose) should be deprecated, unless the reason for using ds->slave_mii_bus is the lack of a phy-handle (the primary purpose). It becomes that more confusing to have to extend dsa_switch_ops with 2 more methods which serve the secondary purpose but not the primary one. > So Luiz patches may allow a C45 bus, but are there any drivers today > actually using it? I sent a private email to Luiz a few minutes ago asking him to confirm.