>Subject: [dpdk-dev] [PATCH 5/6] app/test-eventdev: Enhancing perf-atq >packet flow > >The event ethernet Tx adapter provides data path for the ethernet >transmit >stage. Enqueue a burst of events objects supplied on an event device.
NAK, same as 1/6 use pipeline_atq/queue to test Rx->Tx performace. > >Fixes: 1eb10ad8db8 ("app/testeventdev: add perf all types queue >worker") >Cc: sta...@dpdk.org > >Signed-off-by: Apeksha Gupta <apeksha.gu...@nxp.com> >--- > app/test-eventdev/test_perf_atq.c | 43 ++++++++++++++++++++------ >-- > app/test-eventdev/test_perf_common.h | 4 +++ > 2 files changed, 35 insertions(+), 12 deletions(-) > >diff --git a/app/test-eventdev/test_perf_atq.c b/app/test- >eventdev/test_perf_atq.c >index d0241ec4ae..23e9ad4a29 100644 >--- a/app/test-eventdev/test_perf_atq.c >+++ b/app/test-eventdev/test_perf_atq.c >@@ -70,10 +70,12 @@ perf_atq_worker(void *arg, const int >enable_fwd_latency) > } > > static int >-perf_atq_worker_burst(void *arg, const int enable_fwd_latency) >+perf_atq_worker_burst(void *arg, const int enable_fwd_latency, >+ const uint32_t flags) > { > PERF_WORKER_INIT; > uint16_t i; >+ uint16_t nb_tx; > /* +1 to avoid prefetch out of array check */ > struct rte_event ev[BURST_SIZE + 1]; > >@@ -110,13 +112,21 @@ perf_atq_worker_burst(void *arg, const int >enable_fwd_latency) > nb_stages); > } > } >+ if (flags == TEST_PERF_EVENT_TX_DIRECT) { >+ nb_tx = >rte_event_eth_tx_adapter_enqueue(dev, port, >+ ev, nb_rx, 0); >+ while (nb_tx < nb_rx && !t->done) >+ nb_tx += >rte_event_eth_tx_adapter_enqueue(dev, >+ port, ev + nb_tx, >+ nb_rx - nb_tx, 0); >+ } else { >+ uint16_t enq; > >- uint16_t enq; >- >- enq = rte_event_enqueue_burst(dev, port, ev, nb_rx); >- while (enq < nb_rx) { >- enq += rte_event_enqueue_burst(dev, port, >+ enq = rte_event_enqueue_burst(dev, port, ev, >nb_rx); >+ while (enq < nb_rx) { >+ enq += rte_event_enqueue_burst(dev, >port, > ev + enq, nb_rx >- enq); >+ } > } > } > return 0; >@@ -127,20 +137,29 @@ worker_wrapper(void *arg) > { > struct worker_data *w = arg; > struct evt_options *opt = w->t->opt; >- >+ const bool internal_port = w->t->internal_port; > const bool burst = evt_has_burst_mode(w->dev_id); > const int fwd_latency = opt->fwd_latency; >+ uint32_t flags; > > /* allow compiler to optimize */ > if (!burst && !fwd_latency) > return perf_atq_worker(arg, 0); > else if (!burst && fwd_latency) > return perf_atq_worker(arg, 1); >- else if (burst && !fwd_latency) >- return perf_atq_worker_burst(arg, 0); >- else if (burst && fwd_latency) >- return perf_atq_worker_burst(arg, 1); >- >+ else if (burst && !fwd_latency && internal_port) { >+ flags = TEST_PERF_EVENT_TX_DIRECT; >+ return perf_atq_worker_burst(arg, 0, flags); >+ } else if (burst && !fwd_latency && !internal_port) { >+ flags = TEST_PERF_EVENT_TX_ENQ; >+ return perf_atq_worker_burst(arg, 1, flags); >+ } else if (burst && fwd_latency && internal_port) { >+ flags = TEST_PERF_EVENT_TX_DIRECT; >+ return perf_atq_worker_burst(arg, 0, flags); >+ } else if (burst && fwd_latency && !internal_port) { >+ flags = TEST_PERF_EVENT_TX_ENQ; >+ return perf_atq_worker_burst(arg, 1, flags); >+ } > rte_panic("invalid worker\n"); > } > >diff --git a/app/test-eventdev/test_perf_common.h b/app/test- >eventdev/test_perf_common.h >index 716199d8c9..c86be385ad 100644 >--- a/app/test-eventdev/test_perf_common.h >+++ b/app/test-eventdev/test_perf_common.h >@@ -13,6 +13,7 @@ > #include <rte_ethdev.h> > #include <rte_eventdev.h> > #include <rte_event_eth_rx_adapter.h> >+#include <rte_event_eth_tx_adapter.h> > #include <rte_event_timer_adapter.h> > #include <rte_lcore.h> > #include <rte_malloc.h> >@@ -23,6 +24,9 @@ > #include "evt_options.h" > #include "evt_test.h" > >+#define TEST_PERF_EVENT_TX_ENQ 0x1 >+#define TEST_PERF_EVENT_TX_DIRECT 0X2 >+ > struct test_perf; > > struct worker_data { >-- >2.17.1