Re: [PATCH net-next 3/3] net: dsa: connect a late-arriving PHY at ifup
Andrew Lunn <[email protected]>
| Newsgroups | org.kernel.vger.netdev,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Sat, Aug 22, 2026 at 06:52:59PM +0300, Aleksei Sviridkin wrote: > A PHY whose driver loads firmware at probe has no driver bound while > that module still sits in an unmounted rootfs. phy_attach_direct() > falls back to the generic driver, whose feature set lacks the modes the > port is wired for, and the port is dropped for the rest of the uptime: > > mt7530-mdio mdio-bus:1f lan4: validation of 2500base-x [...] failed: -EINVAL > mt7530-mdio mdio-bus:1f lan4: error -22 setting up PHY for tree 0, switch 0, port 5 > > The same PHY wired to a MAC on the same SoC comes up. The difference is > when the connect happens: the MAC driver connects from ndo_open, DSA > connects during setup, at 1.9 s, before any rootfs exists. > > Keep the port when the connect fails on a PHY that has no driver of its > own, and connect it from the open path instead The problem is, this is not guaranteed to work. The driver might still not be loaded, or it is still downloading firmware to the PHY. Think about the case of NFS root. The kernel will open() the interface as soon as netdev_register() is called. I think you need to look at the PHY driver. Make its probe function return success, but start a thread downloading the firmware. While firmware is downloading, either soft_reset() or config_init() needs to block. That should allow the MAC to bind to the PHY, blocking everything until the PHY is ready. Andrew