Re: [PATCH net-next 3/3] net: dsa: connect a late-arriving PHY at ifup
Aleksei Sviridkin <[email protected]>
| Newsgroups | org.kernel.vger.linux-kernel,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
> Another option is move the firmware download into the bootloader. I went and looked at what that would take, and it does not help here, for a reason that also corrects something in my own commit message. The firmware is not what makes this PHY late. air_en8811h is a module in the rootfs, and on this board it probes at 6.25 s, while the port is already dropped at 1.878 s. Moving the blobs earlier changes nothing while the driver itself arrives that late. Even with the firmware preloaded, en8811h_probe() calls en8811h_load_firmware() unconditionally, and that starts with request_firmware_direct(). Nothing reads the version register or the ready bit first, so a preloaded PHY is reloaded, and a PHY with no blobs available still fails probe. A bootloader preload would need a kernel-side early-out to have any effect at all. And it would be gone before then anyway: the failed bringup ends in phy_detach(), which asserts the reset line, and this PHY has reset-gpios. So whatever the bootloader put in the MD32 is wiped at 1.88 s. U-Boot does already carry the whole loader, in v2026.07, which is what we build. What it cannot do here is read the blobs out of a squashfs inside UBI, and mtk_eth_probe() takes the switch branch and never connects a PHY on this board, so it would be new code either way. None of that argues against your main point. I am dropping this patch and sending the phylink and phylib fixes on their own, since they stand without it. If the phylink hotplug direction ends up wanting someone to test it on hardware that reproduces this, I have the board.