net: fec: make use of generic NET_SELFTESTS library
authorOleksij Rempel <o.rempel@pengutronix.de>
Mon, 19 Apr 2021 13:01:04 +0000 (15:01 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 Apr 2021 23:08:02 +0000 (16:08 -0700)
With this patch FEC on iMX will able to run generic net selftests

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/Kconfig
drivers/net/ethernet/freescale/fec_main.c

index 3f9175bdce775e179493b69cf4c8041c9b2d6e77..3d937b4650b2dee70aaa2da68d82c987ac1ee2eb 100644 (file)
@@ -26,6 +26,7 @@ config FEC
                   ARCH_MXC || SOC_IMX28 || COMPILE_TEST)
        default ARCH_MXC || SOC_IMX28 if ARM
        select CRC32
+       select NET_SELFTESTS
        select PHYLIB
        imply PTP_1588_CLOCK
        help
index aecc111fbe73f047e51516cec17cd3d3edc6f07b..f2065f9d02e62b11944986b0207cf63e0ee15ece 100644 (file)
@@ -38,6 +38,7 @@
 #include <linux/in.h>
 #include <linux/ip.h>
 #include <net/ip.h>
+#include <net/selftests.h>
 #include <net/tso.h>
 #include <linux/tcp.h>
 #include <linux/udp.h>
@@ -2482,6 +2483,9 @@ static void fec_enet_get_strings(struct net_device *netdev,
                        memcpy(data + i * ETH_GSTRING_LEN,
                                fec_stats[i].name, ETH_GSTRING_LEN);
                break;
+       case ETH_SS_TEST:
+               net_selftest_get_strings(data);
+               break;
        }
 }
 
@@ -2490,6 +2494,8 @@ static int fec_enet_get_sset_count(struct net_device *dev, int sset)
        switch (sset) {
        case ETH_SS_STATS:
                return ARRAY_SIZE(fec_stats);
+       case ETH_SS_TEST:
+               return net_selftest_get_count();
        default:
                return -EOPNOTSUPP;
        }
@@ -2741,6 +2747,7 @@ static const struct ethtool_ops fec_enet_ethtool_ops = {
        .set_wol                = fec_enet_set_wol,
        .get_link_ksettings     = phy_ethtool_get_link_ksettings,
        .set_link_ksettings     = phy_ethtool_set_link_ksettings,
+       .self_test              = net_selftest,
 };
 
 static int fec_enet_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)