aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx
diff options
context:
space:
mode:
authorPetr Štetiar <ynezz@true.cz>2019-05-25 01:34:42 +0200
committerPetr Štetiar <ynezz@true.cz>2019-06-05 10:12:30 +0200
commit971d3585791a522df32a8e851eabd4660470a092 (patch)
treec249c8c5ca5c4b026f81137dde240c9780597d43 /target/linux/ar71xx
parent206af613b2441f15bc469dea223ff6fa4e5aa55e (diff)
downloadupstream-971d3585791a522df32a8e851eabd4660470a092.tar.gz
upstream-971d3585791a522df32a8e851eabd4660470a092.tar.bz2
upstream-971d3585791a522df32a8e851eabd4660470a092.zip
ar71xx: ag71xx: update ethtool support
Remove references to broken and mostly deprecated phy_ethtool_ioctl, use new {s,g}et_link_ksettings and add nway_reset which was previously handled in phy_ethtool_ioctl. Cc: John Crispin <john@phrozen.org> Ref: https://bugs.openwrt.org/index.php?do=details&task_id=1982 Signed-off-by: Petr Štetiar <ynezz@true.cz>
Diffstat (limited to 'target/linux/ar71xx')
-rw-r--r--target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c48
1 files changed, 14 insertions, 34 deletions
diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
index a2eaba1a1e..9e5a53e7fc 100644
--- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
+++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
@@ -14,38 +14,6 @@
#include "ag71xx.h"
#include <linux/version.h>
-static int ag71xx_ethtool_get_settings(struct net_device *dev,
- struct ethtool_cmd *cmd)
-{
- struct ag71xx *ag = netdev_priv(dev);
- struct phy_device *phydev = ag->phy_dev;
-
- if (!phydev)
- return -ENODEV;
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
- return phy_ethtool_gset(phydev, cmd);
-#else
- return phy_ethtool_ioctl(phydev, cmd);
-#endif
-}
-
-static int ag71xx_ethtool_set_settings(struct net_device *dev,
- struct ethtool_cmd *cmd)
-{
- struct ag71xx *ag = netdev_priv(dev);
- struct phy_device *phydev = ag->phy_dev;
-
- if (!phydev)
- return -ENODEV;
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
- return phy_ethtool_sset(phydev, cmd);
-#else
- return phy_ethtool_ioctl(phydev, cmd);
-#endif
-}
-
static void ag71xx_ethtool_get_drvinfo(struct net_device *dev,
struct ethtool_drvinfo *info)
{
@@ -127,14 +95,26 @@ static int ag71xx_ethtool_set_ringparam(struct net_device *dev,
return err;
}
+static int ag71xx_ethtool_nway_reset(struct net_device *dev)
+{
+ struct ag71xx *ag = netdev_priv(dev);
+ struct phy_device *phydev = ag->phy_dev;
+
+ if (!phydev)
+ return -ENODEV;
+
+ return genphy_restart_aneg(phydev);
+}
+
struct ethtool_ops ag71xx_ethtool_ops = {
- .set_settings = ag71xx_ethtool_set_settings,
- .get_settings = ag71xx_ethtool_get_settings,
.get_drvinfo = ag71xx_ethtool_get_drvinfo,
.get_msglevel = ag71xx_ethtool_get_msglevel,
.set_msglevel = ag71xx_ethtool_set_msglevel,
.get_ringparam = ag71xx_ethtool_get_ringparam,
.set_ringparam = ag71xx_ethtool_set_ringparam,
+ .get_link_ksettings = phy_ethtool_get_link_ksettings,
+ .set_link_ksettings = phy_ethtool_set_link_ksettings,
.get_link = ethtool_op_get_link,
.get_ts_info = ethtool_op_get_ts_info,
+ .nway_reset = ag71xx_ethtool_nway_reset,
};