aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2014-01-31 09:41:05 +0400
committerDavid S. Miller <davem@davemloft.net>2014-02-01 16:56:48 -0800
commit01cd7d578e01d342b1c06f0dc41c00b445415753 (patch)
treef6de0491cb6f9e9b8d5cb58598ed987e0b49da2e /drivers/net/ethernet
parentnet: ethoc: implement basic ethtool operations (diff)
downloadlinux-dev-01cd7d578e01d342b1c06f0dc41c00b445415753.tar.xz
linux-dev-01cd7d578e01d342b1c06f0dc41c00b445415753.zip
net: ethoc: implement ethtool get/set settings
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Reviewed-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/ethoc.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c
index 0623c20131bb..779d3c386ea7 100644
--- a/drivers/net/ethernet/ethoc.c
+++ b/drivers/net/ethernet/ethoc.c
@@ -890,7 +890,31 @@ out:
return NETDEV_TX_OK;
}
+static int ethoc_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
+{
+ struct ethoc *priv = netdev_priv(dev);
+ struct phy_device *phydev = priv->phy;
+
+ if (!phydev)
+ return -EOPNOTSUPP;
+
+ return phy_ethtool_gset(phydev, cmd);
+}
+
+static int ethoc_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
+{
+ struct ethoc *priv = netdev_priv(dev);
+ struct phy_device *phydev = priv->phy;
+
+ if (!phydev)
+ return -EOPNOTSUPP;
+
+ return phy_ethtool_sset(phydev, cmd);
+}
+
const struct ethtool_ops ethoc_ethtool_ops = {
+ .get_settings = ethoc_get_settings,
+ .set_settings = ethoc_set_settings,
.get_link = ethtool_op_get_link,
.get_ts_info = ethtool_op_get_ts_info,
};