X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-eventdev%2Ftest_order_atq.c;h=2fee4b4daa5febcf029b4ddfc192c9333f79abcf;hb=39ddd5d1895e72ba2bc974eddbc12a3135639ed1;hp=3366cfce9a60d0d248a510c522d6f84361006a76;hpb=33011cb3dfa852014e440489e95fe07e20ad7a1f;p=dpdk.git diff --git a/app/test-eventdev/test_order_atq.c b/app/test-eventdev/test_order_atq.c index 3366cfce9a..2fee4b4daa 100644 --- a/app/test-eventdev/test_order_atq.c +++ b/app/test-eventdev/test_order_atq.c @@ -19,7 +19,7 @@ order_atq_process_stage_0(struct rte_event *const ev) } static int -order_atq_worker(void *arg) +order_atq_worker(void *arg, const bool flow_id_cap) { ORDER_WORKER_INIT; struct rte_event ev; @@ -28,12 +28,15 @@ order_atq_worker(void *arg) uint16_t event = rte_event_dequeue_burst(dev_id, port, &ev, 1, 0); if (!event) { - if (rte_atomic64_read(outstand_pkts) <= 0) + if (__atomic_load_n(outstand_pkts, __ATOMIC_RELAXED) <= 0) break; rte_pause(); continue; } + if (!flow_id_cap) + order_flow_id_copy_from_mbuf(t, &ev); + if (ev.sub_event_type == 0) { /* stage 0 from producer */ order_atq_process_stage_0(&ev); while (rte_event_enqueue_burst(dev_id, port, &ev, 1) @@ -50,7 +53,7 @@ order_atq_worker(void *arg) } static int -order_atq_worker_burst(void *arg) +order_atq_worker_burst(void *arg, const bool flow_id_cap) { ORDER_WORKER_INIT; struct rte_event ev[BURST_SIZE]; @@ -61,13 +64,16 @@ order_atq_worker_burst(void *arg) BURST_SIZE, 0); if (nb_rx == 0) { - if (rte_atomic64_read(outstand_pkts) <= 0) + if (__atomic_load_n(outstand_pkts, __ATOMIC_RELAXED) <= 0) break; rte_pause(); continue; } for (i = 0; i < nb_rx; i++) { + if (!flow_id_cap) + order_flow_id_copy_from_mbuf(t, &ev[i]); + if (ev[i].sub_event_type == 0) { /*stage 0 */ order_atq_process_stage_0(&ev[i]); } else if (ev[i].sub_event_type == 1) { /* stage 1 */ @@ -95,11 +101,19 @@ worker_wrapper(void *arg) { struct worker_data *w = arg; const bool burst = evt_has_burst_mode(w->dev_id); - - if (burst) - return order_atq_worker_burst(arg); - else - return order_atq_worker(arg); + const bool flow_id_cap = evt_has_flow_id(w->dev_id); + + if (burst) { + if (flow_id_cap) + return order_atq_worker_burst(arg, true); + else + return order_atq_worker_burst(arg, false); + } else { + if (flow_id_cap) + return order_atq_worker(arg, true); + else + return order_atq_worker(arg, false); + } } static int