[v4,10/15] test/distributor: switch sequence to dynamic mbuf field

Message ID 20201028102640.3191964-11-thomas@monjalon.net (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series remove mbuf userdata |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Thomas Monjalon Oct. 28, 2020, 10:26 a.m. UTC
  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 <thomas@monjalon.net>
Acked-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Tested-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
---
 app/test/test_distributor.c | 28 +++++++++++++++++++++++-----
 1 file changed, 23 insertions(+), 5 deletions(-)
  

Patch

diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c
index eb889b91d1..24ee824eef 100644
--- a/app/test/test_distributor.c
+++ b/app/test/test_distributor.c
@@ -10,6 +10,7 @@ 
 #include <rte_errno.h>
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
+#include <rte_mbuf_dyn.h>
 #include <rte_distributor.h>
 #include <rte_string_fns.h>
 
@@ -17,6 +18,11 @@ 
 #define BURST 32
 #define BIG_BATCH 1024
 
+typedef uint32_t seq_dynfield_t;
+static int seq_dynfield_offset = -1;
+#define SEQ_FIELD(mbuf) (*RTE_MBUF_DYNFIELD(mbuf, \
+		seq_dynfield_offset, seq_dynfield_t *))
+
 struct worker_params {
 	char name[64];
 	struct rte_distributor *dist;
@@ -578,7 +584,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 +637,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 +666,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 +811,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;