> > - lan78xx_phy_init() (incl. the call to phy_connect_direct()) is called > > after register_netdev(). This may cause races. > > That isn't a problem. We have lots of network device drivers that do > this - in their open() function.
Hi Russell Actually, here is it. lan7801_phy_init() finds the PHY device and connects it to the MAC. lan78xx_open() calls phy_start(), with the assumption lan7801_phy_init() has been called. But the stack trace just provided shows this assumption is wrong. As soon a register_netdev() is called, the kernel auto configuration is kicking in and opening the device. lan78xx_phy_init() needs to happen before register_netdev(), or inside lan78xx_open(). Andrew