net: asix: ax88772: add ethtool pause configuration
authorOleksij Rempel <o.rempel@pengutronix.de>
Mon, 22 Aug 2022 12:39:43 +0000 (14:39 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 26 Aug 2022 09:00:52 +0000 (10:00 +0100)
Add phylink based ethtool pause configuration

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/asix_devices.c

index caa1bed1fe3416b4c6d28c2822772af7e6a73400..11f60d32be82eba670ed88a2402e59f9bd3521bd 100644 (file)
@@ -303,6 +303,24 @@ static int ax88772_ethtool_get_sset_count(struct net_device *ndev, int sset)
        }
 }
 
+static void ax88772_ethtool_get_pauseparam(struct net_device *ndev,
+                                         struct ethtool_pauseparam *pause)
+{
+       struct usbnet *dev = netdev_priv(ndev);
+       struct asix_common_private *priv = dev->driver_priv;
+
+       phylink_ethtool_get_pauseparam(priv->phylink, pause);
+}
+
+static int ax88772_ethtool_set_pauseparam(struct net_device *ndev,
+                                        struct ethtool_pauseparam *pause)
+{
+       struct usbnet *dev = netdev_priv(ndev);
+       struct asix_common_private *priv = dev->driver_priv;
+
+       return phylink_ethtool_set_pauseparam(priv->phylink, pause);
+}
+
 static const struct ethtool_ops ax88772_ethtool_ops = {
        .get_drvinfo            = asix_get_drvinfo,
        .get_link               = usbnet_get_link,
@@ -319,6 +337,8 @@ static const struct ethtool_ops ax88772_ethtool_ops = {
        .self_test              = net_selftest,
        .get_strings            = ax88772_ethtool_get_strings,
        .get_sset_count         = ax88772_ethtool_get_sset_count,
+       .get_pauseparam         = ax88772_ethtool_get_pauseparam,
+       .set_pauseparam         = ax88772_ethtool_set_pauseparam,
 };
 
 static int ax88772_reset(struct usbnet *dev)