mirror of https://github.com/hak5/openwrt.git
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>openwrt-19.07
parent
eafe0611d9
commit
206af613b2
|
@ -13,30 +13,6 @@
|
||||||
|
|
||||||
#include "ag71xx.h"
|
#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)
|
static u32 ag71xx_ethtool_get_msglevel(struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct ag71xx *ag = netdev_priv(dev);
|
struct ag71xx *ag = netdev_priv(dev);
|
||||||
|
@ -108,13 +84,25 @@ static int ag71xx_ethtool_set_ringparam(struct net_device *dev,
|
||||||
return err;
|
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 = {
|
struct ethtool_ops ag71xx_ethtool_ops = {
|
||||||
.set_settings = ag71xx_ethtool_set_settings,
|
|
||||||
.get_settings = ag71xx_ethtool_get_settings,
|
|
||||||
.get_msglevel = ag71xx_ethtool_get_msglevel,
|
.get_msglevel = ag71xx_ethtool_get_msglevel,
|
||||||
.set_msglevel = ag71xx_ethtool_set_msglevel,
|
.set_msglevel = ag71xx_ethtool_set_msglevel,
|
||||||
.get_ringparam = ag71xx_ethtool_get_ringparam,
|
.get_ringparam = ag71xx_ethtool_get_ringparam,
|
||||||
.set_ringparam = ag71xx_ethtool_set_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_link = ethtool_op_get_link,
|
||||||
.get_ts_info = ethtool_op_get_ts_info,
|
.get_ts_info = ethtool_op_get_ts_info,
|
||||||
|
.nway_reset = ag71xx_ethtool_nway_reset,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue