app/testpmd: fix bonding mode set
[dpdk.git] / app / test-eventdev / test_order_atq.c
index c57fbbf..2fee4b4 100644 (file)
@@ -7,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 */
@@ -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
@@ -118,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;
@@ -151,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);