]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: mctp: test: move functions into utils.[ch]
authorJeremy Kerr <jk@codeconstruct.com.au>
Wed, 2 Jul 2025 06:20:07 +0000 (14:20 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 8 Jul 2025 10:39:23 +0000 (12:39 +0200)
A future change will add another mctp test .c file, so move some of the
common test setup from route.c into the utils object.

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

index 3a1a686e36c36d3ee700a093cbf77da7e25afe56..bbee22d33d6d3bb89cc61a0e010b8c4f07c68eae 100644 (file)
@@ -8,169 +8,6 @@
 
 #include "utils.h"
 
-struct mctp_test_route {
-       struct mctp_route       rt;
-};
-
-static const unsigned int test_pktqueue_magic = 0x5f713aef;
-
-struct mctp_test_pktqueue {
-       unsigned int magic;
-       struct sk_buff_head pkts;
-};
-
-static void mctp_test_pktqueue_init(struct mctp_test_pktqueue *tpq)
-{
-       tpq->magic = test_pktqueue_magic;
-       skb_queue_head_init(&tpq->pkts);
-}
-
-static int mctp_test_dst_output(struct mctp_dst *dst, struct sk_buff *skb)
-{
-       struct kunit *test = current->kunit_test;
-       struct mctp_test_pktqueue *tpq = test->priv;
-
-       KUNIT_ASSERT_EQ(test, tpq->magic, test_pktqueue_magic);
-
-       skb_queue_tail(&tpq->pkts, skb);
-
-       return 0;
-}
-
-/* local version of mctp_route_alloc() */
-static struct mctp_test_route *mctp_route_test_alloc(void)
-{
-       struct mctp_test_route *rt;
-
-       rt = kzalloc(sizeof(*rt), GFP_KERNEL);
-       if (!rt)
-               return NULL;
-
-       INIT_LIST_HEAD(&rt->rt.list);
-       refcount_set(&rt->rt.refs, 1);
-       rt->rt.output = mctp_test_dst_output;
-
-       return rt;
-}
-
-static struct mctp_test_route *mctp_test_create_route(struct net *net,
-                                                     struct mctp_dev *dev,
-                                                     mctp_eid_t eid,
-                                                     unsigned int mtu)
-{
-       struct mctp_test_route *rt;
-
-       rt = mctp_route_test_alloc();
-       if (!rt)
-               return NULL;
-
-       rt->rt.min = eid;
-       rt->rt.max = eid;
-       rt->rt.mtu = mtu;
-       rt->rt.type = RTN_UNSPEC;
-       if (dev)
-               mctp_dev_hold(dev);
-       rt->rt.dev = dev;
-
-       list_add_rcu(&rt->rt.list, &net->mctp.routes);
-
-       return rt;
-}
-
-/* Convenience function for our test dst; release with mctp_test_dst_release()
- */
-static void mctp_test_dst_setup(struct kunit *test, struct mctp_dst *dst,
-                               struct mctp_test_dev *dev,
-                               struct mctp_test_pktqueue *tpq,
-                               unsigned int mtu)
-{
-       KUNIT_EXPECT_NOT_ERR_OR_NULL(test, dev);
-
-       memset(dst, 0, sizeof(*dst));
-
-       dst->dev = dev->mdev;
-       __mctp_dev_get(dst->dev->dev);
-       dst->mtu = mtu;
-       dst->output = mctp_test_dst_output;
-       mctp_test_pktqueue_init(tpq);
-       test->priv = tpq;
-}
-
-static void mctp_test_dst_release(struct mctp_dst *dst,
-                                 struct mctp_test_pktqueue *tpq)
-{
-       mctp_dst_release(dst);
-       skb_queue_purge(&tpq->pkts);
-}
-
-static void mctp_test_route_destroy(struct kunit *test,
-                                   struct mctp_test_route *rt)
-{
-       unsigned int refs;
-
-       rtnl_lock();
-       list_del_rcu(&rt->rt.list);
-       rtnl_unlock();
-
-       if (rt->rt.dev)
-               mctp_dev_put(rt->rt.dev);
-
-       refs = refcount_read(&rt->rt.refs);
-       KUNIT_ASSERT_EQ_MSG(test, refs, 1, "route ref imbalance");
-
-       kfree_rcu(&rt->rt, rcu);
-}
-
-static void mctp_test_skb_set_dev(struct sk_buff *skb,
-                                 struct mctp_test_dev *dev)
-{
-       struct mctp_skb_cb *cb;
-
-       cb = mctp_cb(skb);
-       cb->net = READ_ONCE(dev->mdev->net);
-       skb->dev = dev->ndev;
-}
-
-static struct sk_buff *mctp_test_create_skb(const struct mctp_hdr *hdr,
-                                           unsigned int data_len)
-{
-       size_t hdr_len = sizeof(*hdr);
-       struct sk_buff *skb;
-       unsigned int i;
-       u8 *buf;
-
-       skb = alloc_skb(hdr_len + data_len, GFP_KERNEL);
-       if (!skb)
-               return NULL;
-
-       __mctp_cb(skb);
-       memcpy(skb_put(skb, hdr_len), hdr, hdr_len);
-
-       buf = skb_put(skb, data_len);
-       for (i = 0; i < data_len; i++)
-               buf[i] = i & 0xff;
-
-       return skb;
-}
-
-static struct sk_buff *__mctp_test_create_skb_data(const struct mctp_hdr *hdr,
-                                                  const void *data,
-                                                  size_t data_len)
-{
-       size_t hdr_len = sizeof(*hdr);
-       struct sk_buff *skb;
-
-       skb = alloc_skb(hdr_len + data_len, GFP_KERNEL);
-       if (!skb)
-               return NULL;
-
-       __mctp_cb(skb);
-       memcpy(skb_put(skb, hdr_len), hdr, hdr_len);
-       memcpy(skb_put(skb, data_len), data, data_len);
-
-       return skb;
-}
-
 #define mctp_test_create_skb_data(h, d) \
        __mctp_test_create_skb_data(h, d, sizeof(*d))
 
index 26dce14dc7f246f03ff66e5b84274b33c48baf0e..6b4dc40d882c912575e28dfd8f2e730bf346885f 100644 (file)
@@ -82,3 +82,153 @@ void mctp_test_destroy_dev(struct mctp_test_dev *dev)
        mctp_dev_put(dev->mdev);
        unregister_netdev(dev->ndev);
 }
+
+static const unsigned int test_pktqueue_magic = 0x5f713aef;
+
+void mctp_test_pktqueue_init(struct mctp_test_pktqueue *tpq)
+{
+       tpq->magic = test_pktqueue_magic;
+       skb_queue_head_init(&tpq->pkts);
+}
+
+static int mctp_test_dst_output(struct mctp_dst *dst, struct sk_buff *skb)
+{
+       struct kunit *test = current->kunit_test;
+       struct mctp_test_pktqueue *tpq = test->priv;
+
+       KUNIT_ASSERT_EQ(test, tpq->magic, test_pktqueue_magic);
+
+       skb_queue_tail(&tpq->pkts, skb);
+
+       return 0;
+}
+
+/* local version of mctp_route_alloc() */
+static struct mctp_test_route *mctp_route_test_alloc(void)
+{
+       struct mctp_test_route *rt;
+
+       rt = kzalloc(sizeof(*rt), GFP_KERNEL);
+       if (!rt)
+               return NULL;
+
+       INIT_LIST_HEAD(&rt->rt.list);
+       refcount_set(&rt->rt.refs, 1);
+       rt->rt.output = mctp_test_dst_output;
+
+       return rt;
+}
+
+struct mctp_test_route *mctp_test_create_route(struct net *net,
+                                              struct mctp_dev *dev,
+                                              mctp_eid_t eid,
+                                              unsigned int mtu)
+{
+       struct mctp_test_route *rt;
+
+       rt = mctp_route_test_alloc();
+       if (!rt)
+               return NULL;
+
+       rt->rt.min = eid;
+       rt->rt.max = eid;
+       rt->rt.mtu = mtu;
+       rt->rt.type = RTN_UNSPEC;
+       if (dev)
+               mctp_dev_hold(dev);
+       rt->rt.dev = dev;
+
+       list_add_rcu(&rt->rt.list, &net->mctp.routes);
+
+       return rt;
+}
+
+/* Convenience function for our test dst; release with mctp_test_dst_release()
+ */
+void mctp_test_dst_setup(struct kunit *test, struct mctp_dst *dst,
+                        struct mctp_test_dev *dev,
+                        struct mctp_test_pktqueue *tpq, unsigned int mtu)
+{
+       KUNIT_EXPECT_NOT_ERR_OR_NULL(test, dev);
+
+       memset(dst, 0, sizeof(*dst));
+
+       dst->dev = dev->mdev;
+       __mctp_dev_get(dst->dev->dev);
+       dst->mtu = mtu;
+       dst->output = mctp_test_dst_output;
+       mctp_test_pktqueue_init(tpq);
+       test->priv = tpq;
+}
+
+void mctp_test_dst_release(struct mctp_dst *dst,
+                          struct mctp_test_pktqueue *tpq)
+{
+       mctp_dst_release(dst);
+       skb_queue_purge(&tpq->pkts);
+}
+
+void mctp_test_route_destroy(struct kunit *test, struct mctp_test_route *rt)
+{
+       unsigned int refs;
+
+       rtnl_lock();
+       list_del_rcu(&rt->rt.list);
+       rtnl_unlock();
+
+       if (rt->rt.dev)
+               mctp_dev_put(rt->rt.dev);
+
+       refs = refcount_read(&rt->rt.refs);
+       KUNIT_ASSERT_EQ_MSG(test, refs, 1, "route ref imbalance");
+
+       kfree_rcu(&rt->rt, rcu);
+}
+
+void mctp_test_skb_set_dev(struct sk_buff *skb, struct mctp_test_dev *dev)
+{
+       struct mctp_skb_cb *cb;
+
+       cb = mctp_cb(skb);
+       cb->net = READ_ONCE(dev->mdev->net);
+       skb->dev = dev->ndev;
+}
+
+struct sk_buff *mctp_test_create_skb(const struct mctp_hdr *hdr,
+                                    unsigned int data_len)
+{
+       size_t hdr_len = sizeof(*hdr);
+       struct sk_buff *skb;
+       unsigned int i;
+       u8 *buf;
+
+       skb = alloc_skb(hdr_len + data_len, GFP_KERNEL);
+       if (!skb)
+               return NULL;
+
+       __mctp_cb(skb);
+       memcpy(skb_put(skb, hdr_len), hdr, hdr_len);
+
+       buf = skb_put(skb, data_len);
+       for (i = 0; i < data_len; i++)
+               buf[i] = i & 0xff;
+
+       return skb;
+}
+
+struct sk_buff *__mctp_test_create_skb_data(const struct mctp_hdr *hdr,
+                                           const void *data, size_t data_len)
+{
+       size_t hdr_len = sizeof(*hdr);
+       struct sk_buff *skb;
+
+       skb = alloc_skb(hdr_len + data_len, GFP_KERNEL);
+       if (!skb)
+               return NULL;
+
+       __mctp_cb(skb);
+       memcpy(skb_put(skb, hdr_len), hdr, hdr_len);
+       memcpy(skb_put(skb, data_len), data, data_len);
+
+       return skb;
+}
index c702f4a6b5ff9f2de06f6a6bfee0c3653abfdefd..9405ca89d7032d65fbfb92503fbeb884ebd8bd25 100644 (file)
@@ -5,6 +5,9 @@
 
 #include <uapi/linux/netdevice.h>
 
+#include <net/mctp.h>
+#include <net/mctpdevice.h>
+
 #include <kunit/test.h>
 
 #define MCTP_DEV_TEST_MTU      68
@@ -19,9 +22,38 @@ struct mctp_test_dev {
 
 struct mctp_test_dev;
 
+struct mctp_test_route {
+       struct mctp_route       rt;
+};
+
+struct mctp_test_pktqueue {
+       unsigned int magic;
+       struct sk_buff_head pkts;
+};
+
 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);
 
+struct mctp_test_route *mctp_test_create_route(struct net *net,
+                                              struct mctp_dev *dev,
+                                              mctp_eid_t eid,
+                                              unsigned int mtu);
+void mctp_test_dst_setup(struct kunit *test, struct mctp_dst *dst,
+                        struct mctp_test_dev *dev,
+                        struct mctp_test_pktqueue *tpq, unsigned int mtu);
+void mctp_test_dst_release(struct mctp_dst *dst,
+                          struct mctp_test_pktqueue *tpq);
+void mctp_test_pktqueue_init(struct mctp_test_pktqueue *tpq);
+void mctp_test_route_destroy(struct kunit *test, struct mctp_test_route *rt);
+void mctp_test_skb_set_dev(struct sk_buff *skb, struct mctp_test_dev *dev);
+struct sk_buff *mctp_test_create_skb(const struct mctp_hdr *hdr,
+                                    unsigned int data_len);
+struct sk_buff *__mctp_test_create_skb_data(const struct mctp_hdr *hdr,
+                                           const void *data, size_t data_len);
+
+#define mctp_test_create_skb_data(h, d) \
+       __mctp_test_create_skb_data(h, d, sizeof(*d))
+
 #endif /* __NET_MCTP_TEST_UTILS_H */