Message ID | 1391146867-30508-3-git-send-email-jcmvbkbc@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Fri, 2014-01-31 at 09:41 +0400, Max Filippov wrote: > Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Reviewed-by: Ben Hutchings <ben@decadent.org.uk> > --- > Changes v1->v2: > - fix {get,set}_settings return code in case there's no PHY. > > drivers/net/ethernet/ethoc.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c > index 0623c20..779d3c3 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, > };
diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c index 0623c20..779d3c3 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, };
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> --- Changes v1->v2: - fix {get,set}_settings return code in case there's no PHY. drivers/net/ethernet/ethoc.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)