> +int genphy_loopback(struct phy_device *phydev, bool enable) > +{ > + int value; > + > + if (enable) { > + value = phy_read(phydev, MII_BMCR); > + phy_write(phydev, MII_BMCR, value | BMCR_LOOPBACK); > + } else { > + value = phy_read(phydev, MII_BMCR); > + phy_write(phydev, MII_BMCR, value & ~BMCR_LOOPBACK); > + }
You should add error checking here. Both phy_read and phy_write can return an error. Also, do the read and write once. > + > + return 0; > +} > +EXPORT_SYMBOL(genphy_loopback); > + > +static int gen10g_loopback(struct phy_device *phydev, bool enable) > +{ > + return 0; > +} This is pointless. The core code in phy.c should first check if the function exists before calling it. So not having a 10g method is fine. Andrew