From accc558f334662c8b16c121b4819931c028e8eb0 Mon Sep 17 00:00:00 2001 From: Maxime Bizon <mbizon@freebox.fr> Date: Mon, 8 Jun 2009 16:12:10 +0200 Subject: [PATCH 27/63] bcm63xx_enet: implement reset_autoneg ethtool. --- drivers/net/ethernet/broadcom/bcm63xx_enet.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c @@ -1290,6 +1290,20 @@ static void bcm_enet_get_ethtool_stats(s mutex_unlock(&priv->mib_update_lock); } +static int bcm_enet_nway_reset(struct net_device *dev) +{ + struct bcm_enet_priv *priv; + + priv = netdev_priv(dev); + if (priv->has_phy) { + if (!priv->phydev) + return -ENODEV; + return genphy_restart_aneg(priv->phydev); + } + + return -EOPNOTSUPP; +} + static int bcm_enet_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) { @@ -1432,6 +1446,7 @@ static const struct ethtool_ops bcm_enet .get_strings = bcm_enet_get_strings, .get_sset_count = bcm_enet_get_sset_count, .get_ethtool_stats = bcm_enet_get_ethtool_stats, + .nway_reset = bcm_enet_nway_reset, .get_settings = bcm_enet_get_settings, .set_settings = bcm_enet_set_settings, .get_drvinfo = bcm_enet_get_drvinfo,