ath79: ag71xx: update ethtool support
ethtool doesn't work currently as phy_ethtool_ioctl expects user space
pointer, but it's being passed kernel one. Fixing it doesn't make sense
as {s,g}et_settings were deprecated anyway.  So let's rather remove
phy_ethtool_ioctl and use new {s,g}et_link_ksettings instead. While at
it, update nway_reset as well.
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>
			
			
This commit is contained in:
		| @@ -13,30 +13,6 @@ | ||||
|  | ||||
| #include "ag71xx.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; | ||||
|  | ||||
| 	return phy_ethtool_ioctl(phydev, cmd); | ||||
| } | ||||
|  | ||||
| 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; | ||||
|  | ||||
| 	return phy_ethtool_ioctl(phydev, cmd); | ||||
| } | ||||
|  | ||||
| static u32 ag71xx_ethtool_get_msglevel(struct net_device *dev) | ||||
| { | ||||
| 	struct ag71xx *ag = netdev_priv(dev); | ||||
| @@ -108,13 +84,25 @@ 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_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, | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Petr Štetiar
					Petr Štetiar