]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: mctp: test: Add an addressed device constructor
authorJeremy Kerr <jk@codeconstruct.com.au>
Wed, 2 Jul 2025 06:20:05 +0000 (14:20 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 8 Jul 2025 10:39:23 +0000 (12:39 +0200)
Upcoming tests will check semantics of hardware addressing, which
require a dev with ->addr_len != 0. Add a constructor to create a
MCTP interface using a physically-addressed bus type.

Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au>
Link: https://patch.msgid.link/20250702-dev-forwarding-v5-5-1468191da8a4@codeconstruct.com.au
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/mctp/test/utils.c
net/mctp/test/utils.h

index 565763eb02114be8fd2a097fe0fe391d8f4bd2ae..26dce14dc7f246f03ff66e5b84274b33c48baf0e 100644 (file)
@@ -26,19 +26,22 @@ static void mctp_test_dev_setup(struct net_device *ndev)
        ndev->type = ARPHRD_MCTP;
        ndev->mtu = MCTP_DEV_TEST_MTU;
        ndev->hard_header_len = 0;
-       ndev->addr_len = 0;
        ndev->tx_queue_len = DEFAULT_TX_QUEUE_LEN;
        ndev->flags = IFF_NOARP;
        ndev->netdev_ops = &mctp_test_netdev_ops;
        ndev->needs_free_netdev = true;
 }
 
-struct mctp_test_dev *mctp_test_create_dev(void)
+static struct mctp_test_dev *__mctp_test_create_dev(unsigned short lladdr_len,
+                                                   const unsigned char *lladdr)
 {
        struct mctp_test_dev *dev;
        struct net_device *ndev;
        int rc;
 
+       if (WARN_ON(lladdr_len > MAX_ADDR_LEN))
+               return NULL;
+
        ndev = alloc_netdev(sizeof(*dev), "mctptest%d", NET_NAME_ENUM,
                            mctp_test_dev_setup);
        if (!ndev)
@@ -46,6 +49,8 @@ struct mctp_test_dev *mctp_test_create_dev(void)
 
        dev = netdev_priv(ndev);
        dev->ndev = ndev;
+       ndev->addr_len = lladdr_len;
+       dev_addr_set(ndev, lladdr);
 
        rc = register_netdev(ndev);
        if (rc) {
@@ -61,6 +66,17 @@ struct mctp_test_dev *mctp_test_create_dev(void)
        return dev;
 }
 
+struct mctp_test_dev *mctp_test_create_dev(void)
+{
+       return __mctp_test_create_dev(0, NULL);
+}
+
+struct mctp_test_dev *mctp_test_create_dev_lladdr(unsigned short lladdr_len,
+                                                 const unsigned char *lladdr)
+{
+       return __mctp_test_create_dev(lladdr_len, lladdr);
+}
+
 void mctp_test_destroy_dev(struct mctp_test_dev *dev)
 {
        mctp_dev_put(dev->mdev);
index df6aa1c03440922c18eec337b220b8428d1c684e..c702f4a6b5ff9f2de06f6a6bfee0c3653abfdefd 100644 (file)
@@ -3,6 +3,8 @@
 #ifndef __NET_MCTP_TEST_UTILS_H
 #define __NET_MCTP_TEST_UTILS_H
 
+#include <uapi/linux/netdevice.h>
+
 #include <kunit/test.h>
 
 #define MCTP_DEV_TEST_MTU      68
 struct mctp_test_dev {
        struct net_device *ndev;
        struct mctp_dev *mdev;
+
+       unsigned short lladdr_len;
+       unsigned char lladdr[MAX_ADDR_LEN];
 };
 
 struct mctp_test_dev;
 
 struct mctp_test_dev *mctp_test_create_dev(void);
+struct mctp_test_dev *mctp_test_create_dev_lladdr(unsigned short lladdr_len,
+                                                 const unsigned char *lladdr);
 void mctp_test_destroy_dev(struct mctp_test_dev *dev);
 
 #endif /* __NET_MCTP_TEST_UTILS_H */