On 05/26/2017 05:20 PM, woojung....@microchip.com wrote: >> OK, I am confused now. You are describing what is going on with your >> platform right? Can you describe a bit further here what is happening >> and with which type of interface? Is this with the CPU interface or >> something? > > Yes. It's on our platform. > Like your platform, fixed phy is used to connect switch CPU port/master > netdev. > GMAC of SoC is cadence/macb.c with fixed phy modification. > > static int macb_mii_probe(struct net_device *dev) > { > ... > phydev = phy_find_first(bp->mii_bus); > if (!phydev) { > phydev = fixed_phy_register(PHY_POLL, &fphy_status, -1, NULL); > if (IS_ERR(phydev)) { > netdev_err(dev, "no PHY found\n"); > return -ENXIO; > }> } > ... > When failed to find phydev from phy_find_first(), it forces to fixed phy. > ... > /* attach the mac to the phy */ > ret = phy_connect_direct(dev, phydev, &macb_handle_link_change, > bp->phy_interface); > > sysfs_create_lin() inside of phy_connect_direct() fails.
OK, so here is what is happening: macb_mii_init() calls macb_mii_probe() and so by the time we call phy_connect_direct(), we have not called register_netdevice() yet, netdev_register_kobject() has not been called either, and so sysfs_create_link() fails.... Let me think about a way to solve that, even though I am leaning towards ignoring the errors from sysfs_create_link() rather than fixing each and every Ethernet driver to make it probe its MII bus *after* calling register_netdevice().... > > What is driver you are testing? I can check the file. Drivers involved are the following: drivers/net/ethernet/broadcom/bcmsysport.c, drivers/net/dsa/bcm_sf2.c drivers/net/ethernet/broadcom/genet/ drivers/net/phy/bcm7xxx.c -- Florian