X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-eventdev%2Ftest_order_common.c;h=603e7c9178bc8752efa658919764ea1d36b3da77;hb=39ddd5d1895e72ba2bc974eddbc12a3135639ed1;hp=01a44bcd75ec6fd974461ea04df42780058a891d;hpb=a4931d5b2d14ba96554335d6fb360ebc5980082c;p=dpdk.git diff --git a/app/test-eventdev/test_order_common.c b/app/test-eventdev/test_order_common.c index 01a44bcd75..603e7c9178 100644 --- a/app/test-eventdev/test_order_common.c +++ b/app/test-eventdev/test_order_common.c @@ -48,7 +48,7 @@ order_producer(void *arg) const flow_id_t flow = (uintptr_t)m % nb_flows; /* Maintain seq number per flow */ - m->seqn = producer_flow_seq[flow]++; + *order_mbuf_seqn(t, m) = producer_flow_seq[flow]++; order_flow_id_save(t, flow, m, &ev); while (rte_event_enqueue_burst(dev_id, port, &ev, 1) != 1) { @@ -141,6 +141,11 @@ order_test_setup(struct evt_test *test, struct evt_options *opt) .size = sizeof(flow_id_t), .align = __alignof__(flow_id_t), }; + static const struct rte_mbuf_dynfield seqn_dynfield_desc = { + .name = "test_event_dynfield_seqn", + .size = sizeof(seqn_t), + .align = __alignof__(seqn_t), + }; test_order = rte_zmalloc_socket(test->name, sizeof(struct test_order), RTE_CACHE_LINE_SIZE, opt->socket_id); @@ -158,6 +163,13 @@ order_test_setup(struct evt_test *test, struct evt_options *opt) return -rte_errno; } + t->seqn_dynfield_offset = + rte_mbuf_dynfield_register(&seqn_dynfield_desc); + if (t->seqn_dynfield_offset < 0) { + evt_err("failed to register mbuf field"); + return -rte_errno; + } + t->producer_flow_seq = rte_zmalloc_socket("test_producer_flow_seq", sizeof(*t->producer_flow_seq) * opt->nb_flows, RTE_CACHE_LINE_SIZE, opt->socket_id); @@ -175,7 +187,7 @@ order_test_setup(struct evt_test *test, struct evt_options *opt) evt_err("failed to allocate t->expected_flow_seq memory"); goto exp_nomem; } - rte_atomic64_set(&t->outstand_pkts, opt->nb_pkts); + __atomic_store_n(&t->outstand_pkts, opt->nb_pkts, __ATOMIC_RELAXED); t->err = false; t->nb_pkts = opt->nb_pkts; t->nb_flows = opt->nb_flows; @@ -241,7 +253,7 @@ void order_opt_dump(struct evt_options *opt) { evt_dump_producer_lcores(opt); - evt_dump("nb_wrker_lcores", "%d", evt_nr_active_lcores(opt->wlcores)); + evt_dump("nb_worker_lcores", "%d", evt_nr_active_lcores(opt->wlcores)); evt_dump_worker_lcores(opt); evt_dump("nb_evdev_ports", "%d", order_nb_event_ports(opt)); } @@ -282,7 +294,7 @@ order_launch_lcores(struct evt_test *test, struct evt_options *opt, while (t->err == false) { uint64_t new_cycles = rte_get_timer_cycles(); - int64_t remaining = rte_atomic64_read(&t->outstand_pkts); + int64_t remaining = __atomic_load_n(&t->outstand_pkts, __ATOMIC_RELAXED); if (remaining <= 0) { t->result = EVT_TEST_SUCCESS; @@ -296,7 +308,6 @@ order_launch_lcores(struct evt_test *test, struct evt_options *opt, rte_event_dev_dump(opt->dev_id, stdout); evt_err("No schedules for seconds, deadlock"); t->err = true; - rte_smp_wmb(); break; } old_remaining = remaining;