From 6e1096939de00871174bc4d2f187f78c8270ca33 Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Mon, 26 Oct 2020 03:15:33 +0100 Subject: [PATCH] test/distributor: switch sequence to dynamic mbuf field The test used the deprecated mbuf field udata64. It is moved to a dynamic field in order to allow removal of udata64. Signed-off-by: Thomas Monjalon Acked-by: Lukasz Wojciechowski Tested-by: Lukasz Wojciechowski --- app/test/test_distributor.c | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index eb889b91d1..f4c6229f16 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -17,6 +18,15 @@ #define BURST 32 #define BIG_BATCH 1024 +typedef uint32_t seq_dynfield_t; +static int seq_dynfield_offset = -1; + +static inline seq_dynfield_t * +seq_field(struct rte_mbuf *mbuf) +{ + return RTE_MBUF_DYNFIELD(mbuf, seq_dynfield_offset, seq_dynfield_t *); +} + struct worker_params { char name[64]; struct rte_distributor *dist; @@ -578,7 +588,7 @@ handle_and_mark_work(void *arg) __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_RELAXED); for (i = 0; i < num; i++) - buf[i]->udata64 += id + 1; + *seq_field(buf[i]) += id + 1; num = rte_distributor_get_pkt(db, id, buf, buf, num); } @@ -631,10 +641,10 @@ sanity_mark_test(struct worker_params *wp, struct rte_mempool *p) << shift; } /* Assign a sequence number to each packet. The sequence is shifted, - * so that lower bits of the udate64 will hold mark from worker. + * so that lower bits will hold mark from worker. */ for (i = 0; i < buf_count; i++) - bufs[i]->udata64 = i << seq_shift; + *seq_field(bufs[i]) = i << seq_shift; count = 0; for (i = 0; i < buf_count/burst; i++) { @@ -660,8 +670,8 @@ sanity_mark_test(struct worker_params *wp, struct rte_mempool *p) /* Sort returned packets by sent order (sequence numbers). */ for (i = 0; i < buf_count; i++) { - seq = returns[i]->udata64 >> seq_shift; - id = returns[i]->udata64 - (seq << seq_shift); + seq = *seq_field(returns[i]) >> seq_shift; + id = *seq_field(returns[i]) - (seq << seq_shift); sorted[seq] = id; } @@ -805,6 +815,18 @@ test_distributor(void) static struct rte_mempool *p; int i; + static const struct rte_mbuf_dynfield seq_dynfield_desc = { + .name = "test_distributor_dynfield_seq", + .size = sizeof(seq_dynfield_t), + .align = __alignof__(seq_dynfield_t), + }; + seq_dynfield_offset = + rte_mbuf_dynfield_register(&seq_dynfield_desc); + if (seq_dynfield_offset < 0) { + printf("Error registering mbuf field\n"); + return TEST_FAILED; + } + if (rte_lcore_count() < 2) { printf("Not enough cores for distributor_autotest, expecting at least 2\n"); return TEST_SKIPPED; -- 2.20.1