Commit Graph

34 Commits

Author SHA1 Message Date
Jerin Jacob
53a3b7e8dd app: use SPDX tag for Cavium copyright files
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
2018-01-09 16:19:01 +01:00
Bruce Richardson
174a1631d5 app: use SPDX tag for Intel copyright files
Replace the BSD license header with the SPDX tag for files
with only an Intel copyright on them.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2018-01-04 22:41:39 +01:00
Pavan Nikhilesh
57305d794e app/testeventdev: use service cores
Use service cores for offloading event scheduling in case of
centralized scheduling instead of calling the schedule api directly.
This removes the dependency on dedicated scheduler core specified by
giving command line option --slcore.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
2017-10-27 00:53:07 +02:00
Pavan Nikhilesh
13370a3877 eventdev: fix inconsistency in queue config
With the current scheme of event queue configuration the cfg schedule
type macros (RTE_EVENT_QUEUE_CFG_*_ONLY) are inconsistent with the
event schedule type (RTE_SCHED_TYPE_*) this requires unnecessary
conversion between the fastpath and slowpath API's while scheduling
events or configuring event queues.

This patch aims to fix such inconsistency by using event schedule
types (RTE_SCHED_TYPE_*) for event queue configuration.

This patch also fixes example/eventdev_pipeline_sw_pmd as it doesn't
convert RTE_EVENT_QUEUE_CFG_*_ONLY to RTE_SCHED_TYPE_* which leads to
improper events being enqueued to the eventdev.

Fixes: adb5d5486c ("examples/eventdev_pipeline_sw_pmd: add sample app")

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-10-27 00:52:57 +02:00
Jerin Jacob
04716352be app/testeventdev: fix divide by zero in stats
pkts == 0 will result in divide by zero case.
Added a check to fix it.

Coverity issue: 158652
Fixes: 9d3aeb185e ("app/testeventdev: launch perf lcores")
Cc: stable@dpdk.org

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-31 22:43:48 +02:00
Jerin Jacob
30005d0926 app/testeventdev: fix string overflow in parsing
Coverity issue: 158660
Fixes: 4afd440ec1 ("app/testeventdev: update options through command line")
Cc: stable@dpdk.org

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-31 22:43:39 +02:00
Jerin Jacob
3abcd29f2d update Cavium Inc copyright headers
Replace the incorrect reference to "Cavium Networks", "Cavium Ltd"
company name with correct the "Cavium, Inc" company name in
copyright headers.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
2017-07-08 17:43:49 +02:00
Jerin Jacob
1eb10ad8db app/testeventdev: add perf all types queue worker
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:35:35 +02:00
Jerin Jacob
e605024355 app/testeventdev: add perf all types queue test
This is a performance test case that aims at testing the following:
1. Measure the number of events can be processed in a second.
2. Measure the latency to forward an event.

The atq queue test functions as same as "perf_queue" test.
The difference is, it uses, "all type queue" scheme instead of separate
queues for each stage and thus reduces the number of queues required to
realize the use case and enables flow pinning as the event does not
move to the next queue.

Example command to run perf "all types queue" test:

sudo build/app/dpdk-test-eventdev --vdev=event_octeontx --\
--test=perf_atq --plcores=2 --wlcore=3 --stlist=p --nb_pkts=1000000000

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:35:24 +02:00
Jerin Jacob
2369f73329 app/testeventdev: add perf queue worker functions
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:35:13 +02:00
Jerin Jacob
20eb154e04 app/testeventdev: add perf queue test
This is a performance test case that aims at testing the following:
1. Measure the number of events can be processed in a second.
2. Measure the latency to forward an event.

The perf queue test configures the eventdev with Q queues and P ports,
where Q is nb_producers * nb_stages and P is nb_workers + nb_producers.

The user can choose the number of workers, the number of producers and
number of stages through the --wlcores , --plcores and the --stlist
application command line arguments respectively.

The producer(s) injects the events to eventdev based the
first stage sched type list requested by the user through --stlist
the command line argument.

Based on the number of stages to process(selected through --stlist),
the application forwards the event to next upstream queue and
terminates when it reaches the last stage in the pipeline.
On event termination, application increments the number events
processed and print periodically in one second to get the
number of events processed in one second.

When --fwd_latency command line option selected, the application
inserts the timestamp in the event on the first stage and then
on termination, it updates the number of cycles to forward
a packet. The application uses this value to compute the average
latency to a forward packet.

Example command to run perf queue test:
sudo build/app/dpdk-test-eventdev --vdev=event_sw0 -- --test=perf_queue\
--slcore=1 --plcores=2 --wlcore=3 --stlist=p --nb_pkts=1000000000

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:35:02 +02:00
Jerin Jacob
9d3aeb185e app/testeventdev: launch perf lcores
The event producer and master lcore's test termination and
the logic to print the mpps and latency are common for the
queue and all types queue test.

Move them as the common function.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:34:50 +02:00
Jerin Jacob
84a7513d43 app/testeventdev: add perf port setup
Setup one port per worker and link to all queues and setup
N producer ports to inject the events.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:34:39 +02:00
Jerin Jacob
272de06723 app/testeventdev: add perf opt dump and check functions
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:34:28 +02:00
Jerin Jacob
41c219e6c6 app/testeventdev: add perf basic functions
add functions to create mempool, destroy mempool and print the test result.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:34:17 +02:00
Jerin Jacob
ffbae86f7b app/testeventdev: add perf test setup and destroy
perf test has the queue and all types queue variants.
Introduce test_perf_common* to share the common code between those tests.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:34:06 +02:00
Jerin Jacob
cefaee2de0 app/testeventdev: add order all types queue test
This test verifies the same aspects of order_queue test,
The difference is the number of queues used, this test
operates on a single "all types queue"(atq) instead of two
different queues for ordered and atomic.

Example command to run order all types queue test:
sudo build/app/dpdk-test-eventdev --vdev=event_octeontx --\
--test=order_atq --plcores 1 --wlcores 2,3

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:33:55 +02:00
Jerin Jacob
4d04346f1e app/testeventdev: add order queue worker functions
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:33:43 +02:00
Jerin Jacob
02ec2955cf app/testeventdev: add order queue test
The order queue test configures the eventdev with two queues
and an event producer to inject the events to q0(ordered) queue.
Both q0(ordered) and q1(atomic) are linked to all the workers.

The event producer maintains a sequence number per flow and
injects the events to the ordered queue.

The worker receives the events from ordered queue and
forwards to atomic queue. Since the events from an ordered queue can
be processed in parallel on the different workers, the
ingress order of events might have changed on the downsteam
atomic queue enqueue. On enqueue to the atomic queue, the eventdev PMD
driver reorders the event to the original ingress order
i.e producer ingress order).

When the event is dequeued from the atomic queue by the worker,
this test verifies the expected
sequence number of associated event per flow by comparing
the free running expected sequence number per flow.

Example command to run order queue test:

sudo build/app/dpdk-test-eventdev --vdev=event_sw0 --\
--test=order_queue --plcores 1 --wlcores 2,3

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:33:32 +02:00
Jerin Jacob
33b7483db1 app/testeventdev: launch order lcores
The event producer and master lcore's test end and
failure detection logic are common for the queue and
all types queue test.Move them as the common function.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:33:22 +02:00
Jerin Jacob
5710e75181 app/testeventdev: add order port setup
Setup one port per worker and link to all queues and setup
one producer port to inject the events.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:33:11 +02:00
Jerin Jacob
ba11ebf125 app/testeventdev: add order basic functions
add functions to create mempool, destroy mempool,
dump the options, check the options and print the test result.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:32:59 +02:00
Jerin Jacob
d1f59fb71c app/testeventdev: add order test setup and destroy
order test has the queue and all types queue variants. Introduce
test_order_common* to share the common code between those tests.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:32:48 +02:00
Jerin Jacob
2b0bf13c0b app/testeventdev: add signal handler
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:32:37 +02:00
Jerin Jacob
3f3872b1b9 app/testeventdev: invoke the test ops
This patch retrieves the test ops from the given test case name and
invokes the registered test ops callbacks in order and
print the test result.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:32:26 +02:00
Guduri Prathyusha
4afd440ec1 app/testeventdev: update options through command line
Add an infrastructure for updating the options through
application specific command line arguments.

Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:32:15 +02:00
Jerin Jacob
89e840264e app/testeventdev: add helper functions to dump options
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:32:04 +02:00
Jerin Jacob
3c59fb10e7 app/testeventdev: add helper functions to check options
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:31:53 +02:00
Jerin Jacob
0add6c27cd app/testeventdev: define the test options
Define the test options that used across all test cases and
fill the default values for the same.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:31:42 +02:00
Jerin Jacob
68cdc3df46 app/testeventdev: add common helper functions
adding common helper functions that used in test framework and
in all the test cases.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:31:31 +02:00
Guduri Prathyusha
89e5eb1180 app/testeventdev: add string parsing helpers
Add a couple of help functions that will allow parsing many types of
input parameters, i.e.: bool, 16, 32, 64 bits, hex and list of cores etc.

Derived from examples/ip_pipeline/parser.h

Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:31:19 +02:00
Jerin Jacob
ccda04998a app/testeventdev: add registration framework
adding routines to register and retrieve eventdev test cases.
The RTE_INIT based constructor approach has been taken to simplify the test
case registration.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:31:08 +02:00
Jerin Jacob
793a8ba13a app/testeventdev: define test ops
In order to extend the test framework to realize different use cases,
The ops with function pointer callback scheme has been chosen.

This patch defines the callbacks for each test case.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:30:57 +02:00
Jerin Jacob
6d1729de71 app/testeventdev: introduce dpdk-test-eventdev app
The dpdk-test-eventdev tool is a Data Plane Development Kit (DPDK)
application that allows exercising various eventdev use cases. This
application has a generic framework to add new eventdev based test cases
to verify functionality and measure the performance parameters of DPDK
eventdev devices.

This patch adds the skeleton of the dpdk-test-eventdev application.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2017-07-07 09:30:46 +02:00