diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2015-10-01 20:27:19 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2017-01-05 22:38:21 +0000 |
commit | 5fbad84dd18ced0da44831f5b03b130036f6ebab (patch) | |
tree | e2bf20349e5ba20848dd6e41fc6d5b85378e2c5a | |
parent | e70997de9da853a342d464544cbd875637b97a24 (diff) |
phylink: add ethtool nway_reset support
Add ethtool nway_reset support to phylink, to allow userspace to
request a re-negotiation of the link.
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | drivers/net/phy/phylink.c | 14 | ||||
-rw-r--r-- | include/linux/phylink.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index 91d1a3da8648..5f416314a76c 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -783,6 +783,20 @@ int phylink_ethtool_ksettings_set(struct phylink *pl, } EXPORT_SYMBOL_GPL(phylink_ethtool_ksettings_set); +int phylink_ethtool_nway_reset(struct phylink *pl) +{ + int ret = 0; + + mutex_lock(&pl->config_mutex); + if (pl->phydev) + ret = genphy_restart_aneg(pl->phydev); + phylink_mac_an_restart(pl); + mutex_unlock(&pl->config_mutex); + + return ret; +} +EXPORT_SYMBOL_GPL(phylink_ethtool_nway_reset); + /* This emulates MII registers for a fixed-mode phy operating as per the * passed in state. "aneg" defines if we report negotiation is possible. * diff --git a/include/linux/phylink.h b/include/linux/phylink.h index 66544396cddf..a341d0d0ec30 100644 --- a/include/linux/phylink.h +++ b/include/linux/phylink.h @@ -86,6 +86,7 @@ int phylink_ethtool_ksettings_get(struct phylink *, struct ethtool_link_ksettings *); int phylink_ethtool_ksettings_set(struct phylink *, const struct ethtool_link_ksettings *); +int phylink_ethtool_nway_reset(struct phylink *); int phylink_mii_ioctl(struct phylink *, struct ifreq *, int); int phylink_set_link(struct phylink *pl, unsigned int mode, u8 port, |