The order test stored the flow ID in the deprecated mbuf field udata64. It is moved to a dynamic field in order to allow removal of udata64.
Signed-off-by: Thomas Monjalon <tho...@monjalon.net> --- app/test-eventdev/test_order_atq.c | 4 ++-- app/test-eventdev/test_order_common.c | 16 +++++++++++++++- app/test-eventdev/test_order_common.h | 5 +++++ app/test-eventdev/test_order_queue.c | 4 ++-- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/app/test-eventdev/test_order_atq.c b/app/test-eventdev/test_order_atq.c index cfcb1dc4e9..4087c26fc5 100644 --- a/app/test-eventdev/test_order_atq.c +++ b/app/test-eventdev/test_order_atq.c @@ -35,7 +35,7 @@ order_atq_worker(void *arg, const bool flow_id_cap) } if (!flow_id_cap) - ev.flow_id = ev.mbuf->udata64; + ev.flow_id = FLOW_ID(ev.mbuf); if (ev.sub_event_type == 0) { /* stage 0 from producer */ order_atq_process_stage_0(&ev); @@ -72,7 +72,7 @@ order_atq_worker_burst(void *arg, const bool flow_id_cap) for (i = 0; i < nb_rx; i++) { if (!flow_id_cap) - ev[i].flow_id = ev[i].mbuf->udata64; + ev[i].flow_id = FLOW_ID(ev[i].mbuf); if (ev[i].sub_event_type == 0) { /*stage 0 */ order_atq_process_stage_0(&ev[i]); diff --git a/app/test-eventdev/test_order_common.c b/app/test-eventdev/test_order_common.c index dc55d93921..fc82e3ff41 100644 --- a/app/test-eventdev/test_order_common.c +++ b/app/test-eventdev/test_order_common.c @@ -4,6 +4,8 @@ #include "test_order_common.h" +int flow_id_dynfield_offset; + int order_test_result(struct evt_test *test, struct evt_options *opt) { @@ -49,7 +51,7 @@ order_producer(void *arg) const uint32_t flow = (uintptr_t)m % nb_flows; /* Maintain seq number per flow */ m->seqn = producer_flow_seq[flow]++; - m->udata64 = flow; + FLOW_ID(m) = flow; ev.flow_id = flow; ev.mbuf = m; @@ -139,6 +141,18 @@ order_test_setup(struct evt_test *test, struct evt_options *opt) { void *test_order; + static const struct rte_mbuf_dynfield flow_id_dynfield_desc = { + .name = "test_event_dynfield_flow_id", + .size = sizeof(uint32_t), + .align = __alignof__(uint32_t), + }; + flow_id_dynfield_offset = + rte_mbuf_dynfield_register(&flow_id_dynfield_desc); + if (flow_id_dynfield_offset < 0) { + evt_err("failed to register mbuf field"); + return -rte_errno; + } + test_order = rte_zmalloc_socket(test->name, sizeof(struct test_order), RTE_CACHE_LINE_SIZE, opt->socket_id); if (test_order == NULL) { diff --git a/app/test-eventdev/test_order_common.h b/app/test-eventdev/test_order_common.h index e0fe9c968a..13bf791564 100644 --- a/app/test-eventdev/test_order_common.h +++ b/app/test-eventdev/test_order_common.h @@ -13,6 +13,7 @@ #include <rte_lcore.h> #include <rte_malloc.h> #include <rte_mbuf.h> +#include <rte_mbuf_dyn.h> #include "evt_common.h" #include "evt_options.h" @@ -20,6 +21,10 @@ #define BURST_SIZE 16 +extern int flow_id_dynfield_offset; +#define FLOW_ID(mbuf) \ + (*RTE_MBUF_DYNFIELD(mbuf, flow_id_dynfield_offset, uint32_t *)) + struct test_order; struct worker_data { diff --git a/app/test-eventdev/test_order_queue.c b/app/test-eventdev/test_order_queue.c index 1511c0092d..80c9c24af5 100644 --- a/app/test-eventdev/test_order_queue.c +++ b/app/test-eventdev/test_order_queue.c @@ -35,7 +35,7 @@ order_queue_worker(void *arg, const bool flow_id_cap) } if (!flow_id_cap) - ev.flow_id = ev.mbuf->udata64; + ev.flow_id = FLOW_ID(ev.mbuf); if (ev.queue_id == 0) { /* from ordered queue */ order_queue_process_stage_0(&ev); @@ -73,7 +73,7 @@ order_queue_worker_burst(void *arg, const bool flow_id_cap) for (i = 0; i < nb_rx; i++) { if (!flow_id_cap) - ev[i].flow_id = ev[i].mbuf->udata64; + ev[i].flow_id = FLOW_ID(ev[i].mbuf); if (ev[i].queue_id == 0) { /* from ordered queue */ order_queue_process_stage_0(&ev[i]); -- 2.28.0