Messages in this thread | | | Date | Sat, 11 Mar 2023 16:39:36 +0100 | From | Andrew Lunn <> | Subject | Re: [PATCH net-next v2 4/6] net: mdio: scan bus based on bus capabilities for C22 and C45 |
| |
On Sat, Mar 11, 2023 at 07:49:23AM +0100, Klaus Kudielka wrote: > On Sat, 2023-03-11 at 00:49 +0100, Andrew Lunn wrote: > > > Yes, that helps. Primarily, because mdiobus_scan_bus_c45 now is called only once, > > > and at least some things are done in parallel. > > > > Great. Could you cook up a proper patch and submit it? > > I can give it a try. The commit message will be from my perspective, > and the change Suggested-By you.
The commit message is fine.
I have one more idea which can speed things up. The scanning of the MDIO bus works in two different ways depending on if there is a DT node, describing what should be found on the bus. For mv88e6xxx, using DT is optional. Some boards do, some don't.
If there is a DT node, only the addresses listed in DT are scanned.
If there is no DT node, by default, all 32 addresses on the bus are scanned. However, DSA makes another assumption. There is a one to one mapping between port number and PHY address on the MDIO bus. Port 0 uses MDIO address 0. Port 7 uses MDIO address 7 etc. If you have an 8 port switch, there is no point scanning addresses 8 to 31, they will never be used.
The mdio bus structure has a member phy_mask. This is a bitmap. If bit N is set, address N is not scanned. So i suggest you extend mv88e6xxx_mdio_register() to set phy_mask based on mv88e6xxx_num_ports(chip).
Andrew
| |