In drivers/net/phy/mdio_bus.c: mdio_bus_match(), It compare phy_id between driver and device. In drivers/net/phy/generic.c set generic phy driver's phy_id to PHY_ANY_UID My phy is DM9161E, it's id is 0x181b881. Of course they won't match! But the generic phy driver indeed can works with DM9161E Maybe the match logic should be fixed -- Best Regards, zzs