]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: usb: lan78xx: add support for generic net selftests via ethtool
authorOleksij Rempel <o.rempel@pengutronix.de>
Fri, 22 Aug 2025 09:25:55 +0000 (11:25 +0200)
committerJakub Kicinski <kuba@kernel.org>
Mon, 25 Aug 2025 23:22:19 +0000 (16:22 -0700)
Integrate generic net_selftest framework by wiring up
.get_strings, .get_sset_count, and .self_test ethtool ops.

This enables execution of standard self-tests using
`ethtool -t <dev>` on LAN78xx devices.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://patch.msgid.link/20250822092555.2888870-1-o.rempel@pengutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/usb/Kconfig
drivers/net/usb/lan78xx.c

index 0a678e31cfaaac167c6fe37e8ce550286184a199..856e648d804e02642d156b97a4ce7a4df475e3a9 100644 (file)
@@ -116,6 +116,7 @@ config USB_LAN78XX
        select PHYLINK
        select MICROCHIP_PHY
        select CRC32
+       imply NET_SELFTESTS
        help
          This option adds support for Microchip LAN78XX based USB 2
          & USB 3 10/100/1000 Ethernet adapters.
index 1ff25f57329a81b017524eb1bc43fcf22e946064..b56e2459ee3c8f68698b2d422e031b1e3b1cedec 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/mdio.h>
 #include <linux/phy.h>
 #include <net/ip6_checksum.h>
+#include <net/selftests.h>
 #include <net/vxlan.h>
 #include <linux/interrupt.h>
 #include <linux/irqdomain.h>
@@ -1702,12 +1703,16 @@ static void lan78xx_get_strings(struct net_device *netdev, u32 stringset,
 {
        if (stringset == ETH_SS_STATS)
                memcpy(data, lan78xx_gstrings, sizeof(lan78xx_gstrings));
+       else if (stringset == ETH_SS_TEST)
+               net_selftest_get_strings(data);
 }
 
 static int lan78xx_get_sset_count(struct net_device *netdev, int sset)
 {
        if (sset == ETH_SS_STATS)
                return ARRAY_SIZE(lan78xx_gstrings);
+       else if (sset == ETH_SS_TEST)
+               return net_selftest_get_count();
        else
                return -EOPNOTSUPP;
 }
@@ -1894,6 +1899,7 @@ static const struct ethtool_ops lan78xx_ethtool_ops = {
        .set_eeprom     = lan78xx_ethtool_set_eeprom,
        .get_ethtool_stats = lan78xx_get_stats,
        .get_sset_count = lan78xx_get_sset_count,
+       .self_test      = net_selftest,
        .get_strings    = lan78xx_get_strings,
        .get_wol        = lan78xx_get_wol,
        .set_wol        = lan78xx_set_wol,