[OpenWrt-Devel] [PATCH 6/6] ar71xx: ag71xx: update ethtool support

Petr Štetiar ynezz at true.cz
Sat May 25 07:58:41 EDT 2019


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 at phrozen.org>
Ref: https://bugs.openwrt.org/index.php?do=details&task_id=1982
Signed-off-by: Petr Štetiar <ynezz at true.cz>
---
 .../net/ethernet/atheros/ag71xx/ag71xx_ethtool.c   | 48 +++++++---------------
 1 file 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 a2eaba1a1e68..9e5a53e7fce2 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,
 };
-- 
1.9.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list