dpaa2-eth: add support for nway reset
authorRussell King <rmk+kernel@armlinux.org.uk>
Thu, 27 Feb 2020 12:01:54 +0000 (12:01 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 27 Feb 2020 19:27:18 +0000 (11:27 -0800)
Add support for ethtool -r so that PHY negotiation can be restarted.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Acked-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c

index 96676abcebd5da80fb5ef06f894dab690b3be8a9..94347c6952333e0b0bd7a69396a0901861565e3f 100644 (file)
@@ -79,6 +79,16 @@ static void dpaa2_eth_get_drvinfo(struct net_device *net_dev,
                sizeof(drvinfo->bus_info));
 }
 
+static int dpaa2_eth_nway_reset(struct net_device *net_dev)
+{
+       struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
+
+       if (priv->mac)
+               return phylink_ethtool_nway_reset(priv->mac->phylink);
+
+       return -EOPNOTSUPP;
+}
+
 static int
 dpaa2_eth_get_link_ksettings(struct net_device *net_dev,
                             struct ethtool_link_ksettings *link_settings)
@@ -761,6 +771,7 @@ static int dpaa2_eth_get_ts_info(struct net_device *dev,
 
 const struct ethtool_ops dpaa2_ethtool_ops = {
        .get_drvinfo = dpaa2_eth_get_drvinfo,
+       .nway_reset = dpaa2_eth_nway_reset,
        .get_link = ethtool_op_get_link,
        .get_link_ksettings = dpaa2_eth_get_link_ksettings,
        .set_link_ksettings = dpaa2_eth_set_link_ksettings,