From a4458177f582f61771d7e32bb01b3007906cb749 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Tue, 27 Sep 2005 15:28:42 -0700 Subject: [PATCH] --- yaml --- r: 15695 b: refs/heads/master c: 9a7ae0a978263adb7d6b630f0c3c37c0133325e0 h: refs/heads/master i: 15693: 7071a37363412e3bd283782898186d69f1934304 15691: b6b2a013ca4738527300adf44c01e0fdab37b257 15687: 4e3a7c615b0156e48a70932875bae9c272a1be14 15679: 3654aa181d19b08ec17d30eb58d974cb80e321ff v: v3 --- [refs] | 2 +- trunk/drivers/net/sky2.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 17ed147d032c..cfc207870e7d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 724bca3ca4d2126b67dd62e64d3f97805f9672de +refs/heads/master: 9a7ae0a978263adb7d6b630f0c3c37c0133325e0 diff --git a/trunk/drivers/net/sky2.c b/trunk/drivers/net/sky2.c index a6c7bb9cea0d..57583fa86a9b 100644 --- a/trunk/drivers/net/sky2.c +++ b/trunk/drivers/net/sky2.c @@ -2300,6 +2300,24 @@ static u32 sky2_get_msglevel(struct net_device *netdev) return sky2->msg_enable; } +static int sky2_nway_reset(struct net_device *dev) +{ + struct sky2_port *sky2 = netdev_priv(dev); + struct sky2_hw *hw = sky2->hw; + + if (sky2->autoneg != AUTONEG_ENABLE) + return -EINVAL; + + netif_stop_queue(dev); + + spin_lock_irq(&hw->phy_lock); + sky2_phy_reset(hw, sky2->port); + sky2_phy_init(hw, sky2->port); + spin_unlock_irq(&hw->phy_lock); + + return 0; +} + static void sky2_phy_stats(struct sky2_port *sky2, u64 * data, unsigned count) { struct sky2_hw *hw = sky2->hw; @@ -2656,6 +2674,7 @@ static struct ethtool_ops sky2_ethtool_ops = { .get_drvinfo = sky2_get_drvinfo, .get_msglevel = sky2_get_msglevel, .set_msglevel = sky2_set_msglevel, + .nway_reset = sky2_nway_reset, .get_regs_len = sky2_get_regs_len, .get_regs = sky2_get_regs, .get_link = ethtool_op_get_link,