sizeof(info->bus_info));
 }
 
-static int smsc911x_ethtool_nwayreset(struct net_device *dev)
-{
-       return phy_start_aneg(dev->phydev);
-}
-
 static u32 smsc911x_ethtool_getmsglevel(struct net_device *dev)
 {
        struct smsc911x_data *pdata = netdev_priv(dev);
 static const struct ethtool_ops smsc911x_ethtool_ops = {
        .get_link = ethtool_op_get_link,
        .get_drvinfo = smsc911x_ethtool_getdrvinfo,
-       .nway_reset = smsc911x_ethtool_nwayreset,
+       .nway_reset = phy_ethtool_nway_reset,
        .get_msglevel = smsc911x_ethtool_getmsglevel,
        .set_msglevel = smsc911x_ethtool_setmsglevel,
        .get_regs_len = smsc911x_ethtool_getregslen,