X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-eventdev%2Ftest_order_atq.c;h=2fee4b4daa5febcf029b4ddfc192c9333f79abcf;hb=39ddd5d1895e72ba2bc974eddbc12a3135639ed1;hp=4ee0dea8dd4f7397525167e0a66e2439e501c719;hpb=57305d794e03b0ce7f103a99c27148564b31fd05;p=dpdk.git diff --git a/app/test-eventdev/test_order_atq.c b/app/test-eventdev/test_order_atq.c index 4ee0dea8dd..2fee4b4daa 100644 --- a/app/test-eventdev/test_order_atq.c +++ b/app/test-eventdev/test_order_atq.c @@ -1,33 +1,5 @@ -/* - * BSD LICENSE - * - * Copyright (C) Cavium, Inc 2017. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Cavium, Inc nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2017 Cavium, Inc */ #include @@ -35,9 +7,9 @@ #include "test_order_common.h" -/* See http://dpdk.org/doc/guides/tools/testeventdev.html for test details */ +/* See http://doc.dpdk.org/guides/tools/testeventdev.html for test details */ -static inline __attribute__((always_inline)) void +static __rte_always_inline void order_atq_process_stage_0(struct rte_event *const ev) { ev->sub_event_type = 1; /* move to stage 1 (atomic) on the same queue */ @@ -47,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; @@ -56,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) @@ -78,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]; @@ -89,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 */ @@ -123,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 @@ -146,16 +132,7 @@ order_atq_eventdev_setup(struct evt_test *test, struct evt_options *opt) /* number of active worker cores + 1 producer */ const uint8_t nb_ports = nb_workers + 1; - const struct rte_event_dev_config config = { - .nb_event_queues = NB_QUEUES,/* one all types queue */ - .nb_event_ports = nb_ports, - .nb_events_limit = 4096, - .nb_event_queue_flows = opt->nb_flows, - .nb_event_port_dequeue_depth = 128, - .nb_event_port_enqueue_depth = 128, - }; - - ret = rte_event_dev_configure(opt->dev_id, &config); + ret = evt_configure_eventdev(opt, NB_QUEUES, nb_ports); if (ret) { evt_err("failed to configure eventdev %d", opt->dev_id); return ret; @@ -179,10 +156,14 @@ order_atq_eventdev_setup(struct evt_test *test, struct evt_options *opt) if (ret) return ret; - ret = evt_service_setup(opt->dev_id); - if (ret) { - evt_err("No service lcore found to run event dev."); - return ret; + if (!evt_has_distributed_sched(opt->dev_id)) { + uint32_t service_id; + rte_event_dev_service_id_get(opt->dev_id, &service_id); + ret = evt_service_setup(service_id); + if (ret) { + evt_err("No service lcore found to run event dev."); + return ret; + } } ret = rte_event_dev_start(opt->dev_id);