> > What i'm thinking is we add another op to phy_driver dedicated to > > firmware download. We let probe run as is, so the PHY is registered > > and available. But if the firmware op is set, we start a thread and > > call the op in it. Once the op exits, we signal a completion event. > > phy_attach_direct() would then wait on the completion. > > That's really not good, because phy_attach_direct() can be called > from .ndo_open, which will result in the rtnl lock being held while > we wait - so this is not much better than having the firmware load > in .config_init. My guess is, most devices register their MDIO bus, causing the PHYs to be probed, and then do nothing for a while until user space is up and running, which then ifup the interfaces. So we can use that time to start downloading the firmware. We probably end up spending less time holding rtnl in .config_init. For NFS root, it won't help, although if you are using NFS root, you are also likely to be TFTP booting the kernel, so the bootloader has already downloaded the firmware to the PHY. Andrew