dpdk.git
6 years agoapp/eventdev: add pipeline queue test
Pavan Nikhilesh [Tue, 16 Jan 2018 17:46:01 +0000 (23:16 +0530)]
app/eventdev: add pipeline queue test

This is a pipeline queue test case that aims at testing the following:
1. Measure the end-to-end performance of an event dev with a ethernet dev.
2. Maintain packet ordering from Rx to Tx.

The pipeline queue test configures the eventdev with Q queues and P ports,
where Q is (nb_ethdev * nb_stages) + nb_ethdev and P is nb_workers.

The user can choose the number of workers and number of stages through the
--wlcores and the --stlist application command line arguments respectively.
The probed ethernet devices act as producer(s) for this application.

The ethdevs are configured as event Rx adapters that enables them to
injects events to eventdev based the first stage schedule 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 when it
reaches last stage in the pipeline if the event type is ATOMIC it is
enqueued onto ethdev Tx queue else to maintain ordering the event type is
set to ATOMIC and enqueued onto the last stage queue.
On packet Tx, application increments the number events processed and print
periodically in one second to get the number of events processed in one
second.

Note: The --prod_type_ethdev is mandatory for running the application.

Example command to run pipeline queue test:
sudo build/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
--test=pipeline_queue --wlcore=1 --prod_type_ethdev --stlist=ao

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/eventdev: launch pipeline lcores
Pavan Nikhilesh [Tue, 16 Jan 2018 17:46:00 +0000 (23:16 +0530)]
app/eventdev: launch pipeline lcores

The event master lcore's test termination and the logic to print the mpps
are common for the queue and all types queue test.

Move them as the common function.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/eventdev: add Tx service setup
Pavan Nikhilesh [Tue, 16 Jan 2018 17:45:59 +0000 (23:15 +0530)]
app/eventdev: add Tx service setup

Setup one port event port for Tx and link the respective event queue.
Register the Tx function as a service to be called from a service core.
The Tx function dequeues the events from the event queue and transmits
the packet to its respective ethernet port.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/eventdev: add event port and Rx adapter setup
Pavan Nikhilesh [Tue, 16 Jan 2018 17:45:58 +0000 (23:15 +0530)]
app/eventdev: add event port and Rx adapter setup

Setup one port per worker and link to all queues and setup producer port
based on Rx adapter capabilities.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/eventdev: add pipeline ethport setup and destroy
Pavan Nikhilesh [Tue, 16 Jan 2018 17:45:57 +0000 (23:15 +0530)]
app/eventdev: add pipeline ethport setup and destroy

Add common ethdev port setup and destroy along with event dev destroy.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/eventdev: add pipeline opt dump and check functions
Pavan Nikhilesh [Tue, 16 Jan 2018 17:45:56 +0000 (23:15 +0530)]
app/eventdev: add pipeline opt dump and check functions

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/eventdev: add mempool setup and destroy
Pavan Nikhilesh [Tue, 16 Jan 2018 17:45:55 +0000 (23:15 +0530)]
app/eventdev: add mempool setup and destroy

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoapp/eventdev: add pipeline test setup and destroy
Pavan Nikhilesh [Tue, 16 Jan 2018 17:45:54 +0000 (23:15 +0530)]
app/eventdev: add pipeline test setup and destroy

Pipeline test has the queue and all types queue variants.
Introduce test_pipeline_common* to share the common code between those
tests.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoapp/eventdev: add packet distribution logs
Pavan Nikhilesh [Tue, 16 Jan 2018 17:45:53 +0000 (23:15 +0530)]
app/eventdev: add packet distribution logs

Add logs for packet distribution across worker cores to be printed
along with the test results.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoexamples/eventdev: rename example
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:12 +0000 (16:40 +0530)]
examples/eventdev: rename example

Rename eventdev_pipeline_sw_pmd to eventdev_pipeline as it is no longer
specific underlying event device.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: add mempool size configuration
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:11 +0000 (16:40 +0530)]
examples/eventdev: add mempool size configuration

Add option to configure the mempool size at run time instead of
hardcoding it to 16384 * num_ports.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: add atq single stage pipeline worker
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:10 +0000 (16:40 +0530)]
examples/eventdev: add atq single stage pipeline worker

Add optimized eventdev pipeline when ethdev supports thread safe Tx,
number of configured stages is one and all type queue option is enabled.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: add single stage pipeline worker
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:09 +0000 (16:40 +0530)]
examples/eventdev: add single stage pipeline worker

Add optimized eventdev pipeline when ethdev supports thread safe Tx
and number of configured stages is one.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: add all type queue option
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:08 +0000 (16:40 +0530)]
examples/eventdev: add all type queue option

Added configurable option to make queue type as all type queues i.e.
RTE_EVENT_QUEUE_CFG_ALL_TYPES based on event dev capability
RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES.

This can be enabled by supplying '-a' as a cmdline argument.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: add burst for thread safe pipeline
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:07 +0000 (16:40 +0530)]
examples/eventdev: add burst for thread safe pipeline

Add burst mode worker pipeline when Tx is multi thread safe.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: add thread safe Tx worker pipeline
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:06 +0000 (16:40 +0530)]
examples/eventdev: add thread safe Tx worker pipeline

Add worker pipeline when Tx is multi thread safe.
Probe Ethernet dev capabilities and select it it is supported.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: modify work cycles
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:05 +0000 (16:40 +0530)]
examples/eventdev: modify work cycles

The current work cycles function exchanges source and destination mac
address and also pauses the core for the given cycles.
This patch splits the function into two parts i.e. exchange mac and
pause the cores. The pause cores function is invoked at every stage
where as exchange mac is invoked when packet is transmitted.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: add non burst mode generic worker
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:04 +0000 (16:40 +0530)]
examples/eventdev: add non burst mode generic worker

Currently, worker uses burst dequeue and burst enqueue to forward events.
Add a non burst mode based on the event dev capabilities.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: add ops to check cmdline args
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:03 +0000 (16:40 +0530)]
examples/eventdev: add ops to check cmdline args

Each eventdev pipeline needs to allow different cmdline args combination
based on pipeline type.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: add generic worker pipeline
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:02 +0000 (16:40 +0530)]
examples/eventdev: add generic worker pipeline

Rename existing pipeline as generic worker pipeline.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: add framework for caps based pipeline
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:01 +0000 (16:40 +0530)]
examples/eventdev: add framework for caps based pipeline

Add framework to support capability based pipeline.
Based on the capability of event device and probed ethernet devices the
optimal pipeline configuration can be chosen.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: move common data into pipeline common
Pavan Nikhilesh [Wed, 10 Jan 2018 11:10:00 +0000 (16:40 +0530)]
examples/eventdev: move common data into pipeline common

Move common structures and functions into pipeline_common.h so that they
can be used by different kinds of pipelines.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoexamples/eventdev: support Rx adapter
Pavan Nikhilesh [Wed, 10 Jan 2018 11:09:59 +0000 (16:39 +0530)]
examples/eventdev: support Rx adapter

Use event Rx adapter for packets Rx instead of explicit producer logic.
Use service run iter function for granular control instead of using
dedicated service lcore.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agotest/event: register selftests
Pavan Nikhilesh [Thu, 11 Jan 2018 10:21:55 +0000 (15:51 +0530)]
test/event: register selftests

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/sw: update selftest ops
Pavan Nikhilesh [Thu, 11 Jan 2018 10:21:54 +0000 (15:51 +0530)]
event/sw: update selftest ops

Update software eventdev ops to invoke selftest when application invokes
`rte_event_dev_selftest`.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoevent/sw: make test standalone
Pavan Nikhilesh [Thu, 11 Jan 2018 10:21:53 +0000 (15:51 +0530)]
event/sw: make test standalone

Modify test_eventdev_sw to be standalone selftest independent of test
framework.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoevent/sw: move test to driver
Pavan Nikhilesh [Thu, 11 Jan 2018 10:21:52 +0000 (15:51 +0530)]
event/sw: move test to driver

Move software eventdev specific test (test_eventdev_sw) to
driver/event/sw/.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoevent/octeontx: add selftest to device arguments
Pavan Nikhilesh [Thu, 11 Jan 2018 10:21:51 +0000 (15:51 +0530)]
event/octeontx: add selftest to device arguments

Add selftest as a device argument that can be enabled by suppling
'self_test=1' as a vdev parameter

--vdev="event_octeontx,self_test=1"

The selftest is run after vdev creation is successfully
complete.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/octeontx: update selftest ops
Pavan Nikhilesh [Thu, 11 Jan 2018 10:21:50 +0000 (15:51 +0530)]
event/octeontx: update selftest ops

Update octeontx eventdev ops to invoke selftest when application
invokes `rte_event_dev_selftest`.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/octeontx: make test standalone
Pavan Nikhilesh [Thu, 11 Jan 2018 10:21:49 +0000 (15:51 +0530)]
event/octeontx: make test standalone

Modify test_eventdev_octeontx to be standalone selftest independent of
test framework.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
6 years agoevent/octeontx: move test to driver
Pavan Nikhilesh [Thu, 11 Jan 2018 10:21:48 +0000 (15:51 +0530)]
event/octeontx: move test to driver

Move octeontx eventdev specific test (test_eventdev_octeontx.c) to
driver/event/octeontx.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoeventdev: add API to perform self test
Pavan Nikhilesh [Thu, 11 Jan 2018 10:21:47 +0000 (15:51 +0530)]
eventdev: add API to perform self test

Add API to perform self test on the underlying event device driver.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoeal: add test assert macros
Pavan Nikhilesh [Thu, 11 Jan 2018 10:21:46 +0000 (15:51 +0530)]
eal: add test assert macros

Adding common test assertion macros for unit testing.
Replaced common macros in test/test.h with new RTE_TEST_ASSERT_* macros.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
6 years agoapp/eventdev: fix event device queue count
Pavan Nikhilesh [Thu, 28 Dec 2017 10:56:53 +0000 (16:26 +0530)]
app/eventdev: fix event device queue count

Fix the event device queue count reported when producer type is Rx
adapter for perfomance queue and atq test.

Fixes: 20eb154e0435 ("app/testeventdev: add perf queue test")

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/sw: remove stale IQ references when reconfigured
Gage Eads [Tue, 9 Jan 2018 16:19:35 +0000 (10:19 -0600)]
event/sw: remove stale IQ references when reconfigured

This commit fixes a bug in which, when the sw PMD is reconfigured, it would
leave stale IQ chunk pointers in each queue's IQ structure. Now, the PMD
initializes all IQs at eventdev start time and releases all IQ chunk
pointers at eventdev stop time (which has the consequence that any events
in a queue when the eventdev is stopped will be lost). This approach should
be resilient to any reconfiguration done between the stop and start, such
as adding or removing queues.

This commit also fixes two potential issues in iq_chunk.h. iq_init()
now initializes the IQ's count field to 0, and iq_dequeue_burst() sets
iq->head to the appropriate next pointer.

Fixes: dca926ca9faa ("event/sw: use dynamically-sized IQs")

Reported-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Signed-off-by: Gage Eads <gage.eads@intel.com>
Reviewed-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
6 years agodoc: add eventdev OPDL PMD guide
Liang Ma [Tue, 9 Jan 2018 14:19:01 +0000 (14:19 +0000)]
doc: add eventdev OPDL PMD guide

Add the description about opdl pmd

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
6 years agoevent/sw: apply new capability flags
Liang Ma [Tue, 9 Jan 2018 14:18:59 +0000 (14:18 +0000)]
event/sw: apply new capability flags

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
6 years agoevent/octeontx: apply new capability flags
Liang Ma [Tue, 9 Jan 2018 14:18:58 +0000 (14:18 +0000)]
event/octeontx: apply new capability flags

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
6 years agoevent/dpaa2: apply new capability flags
Liang Ma [Tue, 9 Jan 2018 14:18:57 +0000 (14:18 +0000)]
event/dpaa2: apply new capability flags

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
6 years agoeventdev: extend capability flags
Liang Ma [Tue, 9 Jan 2018 14:18:56 +0000 (14:18 +0000)]
eventdev: extend capability flags

add new capability flags to express the opdl PMD limitations.

RTE_EVENT_DEV_CAP_NONSEQ_MODE

Event device is capable of operating in none sequential mode. The path
of the event is not necessary to be sequential. Application can change
the path of event at runtime. If the flag is not set, then event each event
will follow a path from queue 0 to queue 1 to queue 2 etc. If the flag is
set, events may be sent to queues in any order. If the flag is not set, the
eventdev will return an error when the application enqueues an event for a
qid which is not the next in the sequence.

RTE_EVENT_DEV_CAP_RUNTIME_PORT_LINK

Event device is capable of configuring the queue/port link at runtime.
If the flag is not set, the eventdev queue/port link is only can be
configured during  initialization.

RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT

Event device is capable of setting up the link between multiple queue
with single port. If the flag is not set, the eventdev can only map a
single queue to each port or map a single queue to many port.

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/opdl: add unit tests
Liang Ma [Tue, 9 Jan 2018 14:18:55 +0000 (14:18 +0000)]
event/opdl: add unit tests

This commit adds unit test inside the OPDL PMD. There is a PMd parameter
"self_test" can be used to triger the test when vdev bus probe opdl device

  e.g.

  sudo ./app/test --vdev="event_opdl0,self_test=1"

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
6 years agoevent/opdl: add enqueue/dequeue
Liang Ma [Tue, 9 Jan 2018 14:18:54 +0000 (14:18 +0000)]
event/opdl: add enqueue/dequeue

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
6 years agoevent/opdl: add event port config get/set
Liang Ma [Tue, 9 Jan 2018 14:18:53 +0000 (14:18 +0000)]
event/opdl: add event port config get/set

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
6 years agoevent/opdl: add event queue config get/set
Liang Ma [Tue, 9 Jan 2018 14:18:52 +0000 (14:18 +0000)]
event/opdl: add event queue config get/set

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
6 years agoevent/opdl: add PMD main body and helper function
Liang Ma [Tue, 9 Jan 2018 14:18:51 +0000 (14:18 +0000)]
event/opdl: add PMD main body and helper function

This commit adds a OPDL implementation of the eventdev API. The
implementation here is intended to enable the community to use
the OPDL infrastructure under eventdev API.

The main components of the implementation is three files:
  - opdl_evdev.c              Creation, configuration, etc
  - opdl_evdev_xstats.c       helper function to support stats collection
  - opdl_evdev.h              include the main data structure of opdl
                              device and all the function prototype
                              need to be exposed to support eventdev API.

  - opdl_evdev_init.c         implement all initailization helper function

This commit only adds the implementation, no existing DPDK files
are modified.

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
6 years agoevent/opdl: add OPDL ring infrastructure library
Liang Ma [Tue, 9 Jan 2018 14:18:50 +0000 (14:18 +0000)]
event/opdl: add OPDL ring infrastructure library

OPDL ring is the core infrastructure of OPDL PMD. OPDL ring library
provide the core data structure and core helper function set. The Ring
implements a single ring multi-port/stage pipelined packet distribution
mechanism. This mechanism has the following characteristics:

• No multiple queue cost, therefore, latency is significant reduced.
• Fixed dependencies between queue/ports is more suitable for complex.
  fixed pipelines of stateless packet processing (static pipeline).
• Has decentralized distribution (no scheduling core).
• Packets remain in order (no reorder core(s)).
* Update build system to enable compilation.

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Peter Mccarthy <peter.mccarthy@intel.com>
Reviewed-by: Seán Harte <seanbh@gmail.com>
6 years agoapp/eventdev: add service core configuration
Pavan Nikhilesh [Mon, 11 Dec 2017 15:13:45 +0000 (20:43 +0530)]
app/eventdev: add service core configuration

Add service core configuration for Rx adapter. The configuration picks
the least used service core to run the service on.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
6 years agoapp/eventdev: add event Rx adapter setup
Pavan Nikhilesh [Mon, 11 Dec 2017 15:13:44 +0000 (20:43 +0530)]
app/eventdev: add event Rx adapter setup

Add functions to setup and configure Rx adapter based on the number of
ethdev ports setup.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoapp/eventdev: add ethernet device tear down
Pavan Nikhilesh [Mon, 11 Dec 2017 15:13:43 +0000 (20:43 +0530)]
app/eventdev: add ethernet device tear down

Add ethernet device destroy functions to stop and close ethdev ports
if they are configured when prod_type_ethdev option is enabled.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoapp/eventdev: add ethernet device setup helpers
Pavan Nikhilesh [Mon, 11 Dec 2017 15:13:42 +0000 (20:43 +0530)]
app/eventdev: add ethernet device setup helpers

Add ethernet device setup functions to configure ethdev ports incase
prod_type_ethdev option is enabled.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoapp/eventdev: add pktmbuf pool for ethdev
Pavan Nikhilesh [Mon, 11 Dec 2017 15:13:41 +0000 (20:43 +0530)]
app/eventdev: add pktmbuf pool for ethdev

Add pktmbuf pool creation used when configuring ethernet device as event
producer.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoapp/eventdev: modify setup to support ethdev
Pavan Nikhilesh [Mon, 11 Dec 2017 15:13:40 +0000 (20:43 +0530)]
app/eventdev: modify setup to support ethdev

Modify app setup to accommodate event port and queue setup based on the
number of ethernet ports.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoapp/eventdev: add ethernet device producer option
Pavan Nikhilesh [Mon, 11 Dec 2017 15:13:39 +0000 (20:43 +0530)]
app/eventdev: add ethernet device producer option

Add command line option --prod_type_ethdev to specify that the events
are generated by ethernet device.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoeventdev: use links map to unlink queues
Pavan Nikhilesh [Tue, 12 Dec 2017 18:58:09 +0000 (00:28 +0530)]
eventdev: use links map to unlink queues

The octeontx event device doesn't store the queues to port mapping as a
result it cannot return the exact number of queues unlinked from a port
when application wants to unlink all the queues mapped (supplies queues
param as NULL).

Using links_map we can determine the exact queues mapped to a specific
port and unlink them.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
6 years agoeventdev: fix doxygen comments
Pavan Nikhilesh [Sat, 9 Dec 2017 14:40:07 +0000 (20:10 +0530)]
eventdev: fix doxygen comments

Fix doxygen return values and indentation.

Fixes: 64103dbcd673 ("eventdev: add dev attribute get function")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Kevin Laatz <kevin.laatz@intel.com>
6 years agoevent/sw: simplify credit scheme
Gage Eads [Mon, 11 Dec 2017 17:56:32 +0000 (11:56 -0600)]
event/sw: simplify credit scheme

This commit modifies the sw PMD credit scheme such that credits are
consumed when enqueueing a NEW event and released when an event is
released -- typically, the beginning and end of a pipeline. Workers that
simply forward events do not interact with the credit pool.

Signed-off-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoeventdev: add implicit release disable capability
Gage Eads [Mon, 11 Dec 2017 17:56:31 +0000 (11:56 -0600)]
eventdev: add implicit release disable capability

This commit introduces a capability for disabling the "implicit" release
functionality for a port, which prevents the eventdev PMD from issuing
outstanding releases for previously dequeued events when dequeuing a new
batch of events.

If a PMD does not support this capability, the application will receive an
error if it attempts to setup a port with implicit releases disabled.
Otherwise, if the port is configured with implicit releases disabled, the
application must release each dequeued event by invoking
rte_event_enqueue_burst() with RTE_EVENT_OP_RELEASE or
RTE_EVENT_OP_FORWARD.

Signed-off-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoevent/sw: use dynamically-sized IQs
Gage Eads [Thu, 30 Nov 2017 03:08:34 +0000 (21:08 -0600)]
event/sw: use dynamically-sized IQs

This commit introduces dynamically-sized IQs, by switching the underlying
data structure from a fixed-size ring to a linked list of queue 'chunks.'
This has a number of benefits:
- Certain corner cases were observed in which all of a pipeline's flows
  could be pinned to one port for extended periods, effectively turning a
  multi-core pipeline into single-core one. This was caused by an event
  producer having a larger new_event_threshold than the IQ depth, and
  injecting large numbers of packets that are ultimately backpressured in a
  worker's rx_ring, causing those packets' flows to be scheduled to that
  port.
  The dynamically sized IQ does not have this problem because each IQ can
  grow large enough to store all the system's events, such that
  backpressure will not reach the worker_ring.
- Slight performance improvement (~1-2%) in high throughput scenarios,
  tested with eventdev_pipeline_sw_pmd.

This implementation has a small increase in the queue storage memory
footprint (~70KB). This commit also removes the iq_size xstat, which no
longer applies to this implementation.

Signed-off-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoevent/sw: fix queue memory leak and multi-link bug
Gage Eads [Thu, 30 Nov 2017 03:08:33 +0000 (21:08 -0600)]
event/sw: fix queue memory leak and multi-link bug

This commit reinitializes a queue before it is reconfigured, such that
reorder buffer memory is not leaked.

This bug masked a few other problems, which this commit corrects as well:
- sw_port_link() allowed a port to link to a queue twice, such that the
  port could then successfully unlink the queue twice. Now the link
  function checks whether a port is already linked to the queue, and if so
  returns success but doesn't assign the a port a second slot in the
  queue's cq map.
- test_eventdev.c's test_eventdev_unlink() was unlinking a queue twice
  from the same port, and expecting the second unlink to succeed. Now the
  test unlinks, links, then unlinks again.
- test_eventdev.c's test_eventdev_link_get() was linking a single queue but
  expecting the unlink function to return nb_queues (where nb_queues > 1).
  The test now checks for a return value of 1.

Fixes: 5ffb2f142d95 ("event/sw: support event queues")
Fixes: 371a688fc159 ("event/sw: support linking queues to ports")
Fixes: f8f9d233ea0e ("test/eventdev: add unit tests")
Cc: stable@dpdk.org
Signed-off-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agotest/eventdev: use CPU event type
Jerin Jacob [Mon, 4 Dec 2017 08:11:18 +0000 (13:41 +0530)]
test/eventdev: use CPU event type

octeontx test application was using non RTE_EVENT_TYPE_CPU
event type to generate the event from CPU.  Upon the introduction
of ethdev Rx adapter, RTE_EVENT_TYPE_ETHDEV has special
meaning. So avoid using non RTE_EVENT_TYPE_CPU event types
to inject events from CPU.

Fixes: d0d654986018 ("net/octeontx: support event Rx adapter")
Cc: stable@dpdk.org
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Reviewed-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
6 years agoeventdev: set error code in port link/unlink functions
Gage Eads [Tue, 14 Nov 2017 22:44:10 +0000 (16:44 -0600)]
eventdev: set error code in port link/unlink functions

The return value for rte_event_port_{link, unlink}() is defined as the
"number of {links, unlinks} actually established." However, the eventdev
layer's error checking returns negative error values. This commit aligns
the eventdev code with the API definition by having it set rte_errno and
return 0 if it detects an error.

Fixes: 4f0804bbdfb9 ("eventdev: implement the northbound APIs")
Cc: stable@dpdk.org
Signed-off-by: Gage Eads <gage.eads@intel.com>
6 years agoexamples/bbdev: add sample app
Amr Mokhtar [Thu, 11 Jan 2018 19:23:22 +0000 (19:23 +0000)]
examples/bbdev: add sample app

- sample application performing a loop-back over ethernet using
 a bbbdev device
- 'turbo_sw' PMD must be enabled for the app to be functional
- a packet is received on an ethdev port -> enqueued for baseband
 encode operation -> dequeued -> enqueued for baseband decode
 operation-> dequeued -> compared with original signal -> looped-back
 to the ethdev port

Signed-off-by: Amr Mokhtar <amr.mokhtar@intel.com>
6 years agoapp/testbbdev: add test application for bbdev
Amr Mokhtar [Thu, 11 Jan 2018 19:23:21 +0000 (19:23 +0000)]
app/testbbdev: add test application for bbdev

- full test suite for bbdev
- test App works seamlessly on all PMDs registered with bbdev
 framework
- a python script is provided to make our life easier
- supports execution of tests by parsing Test Vector files
- test Vectors can be added/deleted/modified with no need for
 re-compilation
- various tests can be executed:
 (a) Throughput test
 (b) Offload latency test
 (c) Operation latency test
 (d) Validation test
 (c) Sanity checks

Signed-off-by: Amr Mokhtar <amr.mokhtar@intel.com>
6 years agobb/turbo_sw: add software turbo driver
Amr Mokhtar [Thu, 11 Jan 2018 19:23:20 +0000 (19:23 +0000)]
bb/turbo_sw: add software turbo driver

- bbdev 'turbo_sw' is the software accelerated version of 3GPP L1
 Turbo coding operation using the optimized Intel FlexRAN SDK libraries.
- 'turbo_sw' pmd is disabled by default

Signed-off-by: Amr Mokhtar <amr.mokhtar@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agobb/null: add null base band device driver
Amr Mokhtar [Thu, 11 Jan 2018 19:23:19 +0000 (19:23 +0000)]
bb/null: add null base band device driver

- 'bbdev_null' is a basic pmd that performs a minimalistic
 bbdev operation
- useful for bbdev smoke testing and in measuring the overhead
 introduced by the bbdev library
- 'bbdev_null' pmd is enabled by default

Signed-off-by: Amr Mokhtar <amr.mokhtar@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agobbdev: introduce wireless base band device lib
Amr Mokhtar [Thu, 11 Jan 2018 19:23:18 +0000 (19:23 +0000)]
bbdev: introduce wireless base band device lib

- wireless baseband device (bbdev) library files
- bbdev is tagged as EXPERIMENTAL
- Makefiles and configuration macros definition
- bbdev library is enabled by default
- release notes of the initial version

Signed-off-by: Amr Mokhtar <amr.mokhtar@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agomember: fix memory leak on error
Anatoly Burakov [Fri, 12 Jan 2018 17:23:16 +0000 (17:23 +0000)]
member: fix memory leak on error

rte_member may have allocated a tailq entry or setum before failure,
so free them.

Fixes: 857ed6c68cf2 ("member: implement main API")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Yipeng Wang <yipeng1.wang@intel.com>
6 years agomempool/octeontx: fix natural alignment being optimized out
Pavan Nikhilesh [Thu, 18 Jan 2018 13:44:33 +0000 (19:14 +0530)]
mempool/octeontx: fix natural alignment being optimized out

The mbox messages are naturally aligned and in some cases compiler
optimization might disregard natural alignment.
Use volatile key word to force compiler to disable optimizing and
maintain alignment.

Fixes: aecb8e093b52 ("event/octeontx: introduce specialized mbox message copy")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
6 years agomempool/dpaa: optimize phy to virt conversion
Hemant Agrawal [Wed, 17 Jan 2018 08:51:32 +0000 (14:21 +0530)]
mempool/dpaa: optimize phy to virt conversion

If the allocation is from a single memzone, optimize
the phy-virt address conversions.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agombuf: fix performance of freeing with non atomic refcnt
Olivier Matz [Fri, 8 Dec 2017 15:46:51 +0000 (16:46 +0100)]
mbuf: fix performance of freeing with non atomic refcnt

When RTE_MBUF_REFCNT_ATOMIC=n, the decrement of the mbuf reference
counter uses an atomic operation. This is not necessary and impacts
the performance (seen with TRex traffic generator).

We cannot replace rte_atomic16_add_return() by rte_mbuf_refcnt_update()
because it would add an additional check.

Solves this by introducing __rte_mbuf_refcnt_update(), which
updates the reference counter without doing anything else.

Fixes: 8f094a9ac5d7 ("mbuf: set mbuf fields while in pool")
Cc: stable@dpdk.org
Suggested-by: Hanoch Haim <hhaim@cisco.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
6 years agotest/flow_classify: fix build warning
Jasvinder Singh [Thu, 18 Jan 2018 15:18:14 +0000 (15:18 +0000)]
test/flow_classify: fix build warning

Move all static variables defined in header file to c file.

error log: /usr/bin/ld: Warning: size of symbol 'count' changed
  from 8 in test_pmd_perf.o to 24 in test_flow_classify.o

Fixes: 50bdac5916d9 ("flow_classify: remove table id parameter from API")

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agotest/mempool_perf: improve default mempool ops selection
Jerin Jacob [Sun, 19 Nov 2017 04:55:31 +0000 (10:25 +0530)]
test/mempool_perf: improve default mempool ops selection

Use of rte_eal_mbuf_default_mempool_ops() API will
allow to override pool handler through "--mbuf-pool-ops-name"
eal command line argument.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
6 years agotest/mempool: improve default mempool ops selection
Jerin Jacob [Tue, 9 Jan 2018 15:57:08 +0000 (21:27 +0530)]
test/mempool: improve default mempool ops selection

Use of rte_eal_mbuf_default_mempool_ops() API will
allow to override pool handler through "--mbuf-pool-ops-name"
eal command line argument.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
6 years agotest/flow_classify: remove port bound requirement
Bernard Iremonger [Thu, 4 Jan 2018 10:39:46 +0000 (10:39 +0000)]
test/flow_classify: remove port bound requirement

Remove the requirement to have a port bound to igb_uio in
order to run this test suite.

Fixes: 9c9befea4f57 ("test: add flow classify unit tests")
Cc: stable@dpdk.org
Reported-by: Anatoly Burakov <anatoly.burakov@intel.com>
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
6 years agotest/memzone: fix freeing test
Phil Yang [Mon, 15 Jan 2018 05:43:33 +0000 (13:43 +0800)]
test/memzone: fix freeing test

When reserving memzone for mz[], it will out of mz[RTE_MAX_MEMZONE] memory
bound after the counter reached to RTE_MAX_MEMZONE. It will flush the
counter's memory and lead to mz[] memory cannot be freed.

Fixd by extend to mz[RTE_MAX_MEMZONE + 1].

Fixes: ff909fe21f0a ("mem: introduce memzone freeing")
Cc: stable@dpdk.org
Signed-off-by: Phil Yang <phil.yang@arm.com>
Acked-by: Jianbo Liu <jianbo.liu@arm.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agotest/memzone: fix NULL freeing
Phil Yang [Mon, 15 Jan 2018 05:43:32 +0000 (13:43 +0800)]
test/memzone: fix NULL freeing

No need to free a NULL memzone. It will cause test
termination.

Fixes: 71330483a193 ("test/memzone: fix memory leak")
Cc: stable@dpdk.org
Signed-off-by: Phil Yang <phil.yang@arm.com>
Acked-by: Jianbo Liu <jianbo.liu@arm.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agotest/memzone: fix wrong test
Anatoly Burakov [Thu, 21 Dec 2017 18:19:44 +0000 (18:19 +0000)]
test/memzone: fix wrong test

When reserving memzones in autotest, it makes no sense to expect a
failed memzone reserve when we specify both size flags - instead,
we should expect a memzone reserved with one of the two sizes.

Fixes: af75078fece3 ("first public release")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agotest/memzone: fix copy-paste typo
Anatoly Burakov [Thu, 21 Dec 2017 18:19:43 +0000 (18:19 +0000)]
test/memzone: fix copy-paste typo

Fixes: b77b5639726e ("mem: add huge page sizes for IBM Power")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agotest/memzone: fix typo
Anatoly Burakov [Thu, 21 Dec 2017 18:19:42 +0000 (18:19 +0000)]
test/memzone: fix typo

Fixes: 71330483a193 ("test/memzone: fix memory leak")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
6 years agotest/table: fix uninitialized parameter
Anatoly Burakov [Thu, 21 Dec 2017 15:53:05 +0000 (15:53 +0000)]
test/table: fix uninitialized parameter

delete_bulk() copies metadata to pointers provided by the entries
parameter, but in the unit test, they are uninitialized, leading
to rte_table attempting to memcpy into random garbage pointers.

Memsetting pointer table to zero will prevent that from happening.

Fixes: 48f2543cf0a8 ("app/test: add bulk adding and deleting")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
6 years agotest: add malloc stats dump command
Anatoly Burakov [Fri, 22 Dec 2017 09:51:00 +0000 (09:51 +0000)]
test: add malloc stats dump command

This can be useful for checking if an autotest leaks memory after
its execution.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agotest: register test as failed if setup failed
Anatoly Burakov [Fri, 22 Dec 2017 10:21:51 +0000 (10:21 +0000)]
test: register test as failed if setup failed

If test set up couldn't be completed, the test was previously
shown as succeeding, even though setup failed. Fix this to report
test as failed, and count all tests that should've been executed,
as failed as well.

Fixes: ffac67b1f71b ("app/test: new assert macros and test suite runner")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
6 years agotest/crypto: use skipped return result
Harry van Haaren [Thu, 11 Jan 2018 17:50:35 +0000 (17:50 +0000)]
test/crypto: use skipped return result

The cryptodev tests are updated to return SKIPPED instead
of failing if the PMD is not enabled, allowing test
infrastructure to identify that the test was not able to run.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
6 years agotest: add skipped return result
Harry van Haaren [Thu, 11 Jan 2018 17:50:34 +0000 (17:50 +0000)]
test: add skipped return result

This commit allows a test to return "skipped", indicating
that it cannot be run. This is useful for PMDs which have
not been compiled due to the unavailability of dependencies,
or their explicit disabling in the build configuration.

The result printing is updated to correctly indicate if a
test has been skipped.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
6 years agotest: use env variable to run tests
Harry van Haaren [Thu, 11 Jan 2018 17:50:33 +0000 (17:50 +0000)]
test: use env variable to run tests

With this patch the test binary checks the DPDK_TEST
environment variable and if set, the contents of the var
are inserted on the test app command line, and run.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Reviewed-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
6 years agodoc: announce ABI change for ring structure
Olivier Matz [Mon, 11 Sep 2017 13:39:13 +0000 (15:39 +0200)]
doc: announce ABI change for ring structure

As discussed on the mailing list, the alignment constraint of
the ring structure can be relaxed.

Link: http://dpdk.org/dev/patchwork/patch/25039
Link: http://dpdk.org/dev/patchwork/patch/26103
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agoapp/procinfo: add compilation option in config
Anatoly Burakov [Fri, 12 Jan 2018 18:27:29 +0000 (18:27 +0000)]
app/procinfo: add compilation option in config

Unlike every other DPDK application's compilation, proc_info's
compilation cannot be turned off on Linux. Fix it by adding a
config option to base linuxapp config.

Fixes: 22561383ea17 ("app: replace dump_cfg by proc_info")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agoapp/testpmd: fix invalid Tx queue number setting
Wei Dai [Fri, 12 Jan 2018 11:31:22 +0000 (19:31 +0800)]
app/testpmd: fix invalid Tx queue number setting

If an invalid number of TX queues is configured from testpmd run-time
command like "port config all txq number" or from --txq in the command
to start testpmd, the global variable nb_txq is updated by this invalid
value without this patch. It may cause testpmd crash. This patch refuses
invalid txq setting and keeps its last correct value.

Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings")
Cc: stable@dpdk.org
Signed-off-by: Wei Dai <wei.dai@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Tested-by: Yuan Peng <yuan.peng@intel.com>
6 years agoapp/testpmd: fix invalid Rx queue number setting
Wei Dai [Fri, 12 Jan 2018 11:31:21 +0000 (19:31 +0800)]
app/testpmd: fix invalid Rx queue number setting

If an invalid number of RX queues is configured from testpmd run-time
command like "port config all rxq number" or from --rxq in the command
to start testpmd, the global variable nb_rxq is updated by this invalid
value without this patch. It may cause testpmd crash. This patch refuses
invalid rxq setting and keeps its last correct value.

Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings")
Cc: stable@dpdk.org
Signed-off-by: Wei Dai <wei.dai@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Tested-by: Yuan Peng <yuan.peng@intel.com>
6 years agopdump: fix error check when creating/canceling thread
Olivier Matz [Fri, 8 Dec 2017 10:20:13 +0000 (11:20 +0100)]
pdump: fix error check when creating/canceling thread

On error, pthread_create() returns a positive number (an errno)
but does not set the errno variable.

Fixes: 278f945402c5 ("pdump: add new library for packet capture")
Cc: stable@dpdk.org
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
6 years agovfio: fix FreeBSD build
Moti Haimovsky [Wed, 17 Jan 2018 17:24:15 +0000 (19:24 +0200)]
vfio: fix FreeBSD build

This patch fixes the following compilation errors in bsdapp

lib/librte_eal/bsdapp/eal/eal.c:782:5:
error: no previous prototype for function 'rte_vfio_clear_group'
int rte_vfio_clear_group(int vfio_group_fd)
    ^

lib/librte_eal/bsdapp/eal/eal.c:782:30:
error: unused parameter 'vfio_group_fd'
int rte_vfio_clear_group(int vfio_group_fd)
                             ^

Fixes: c564a2a20093 ("vfio: expose clear group function for internal usages")

Signed-off-by: Moti Haimovsky <motih@mellanox.com>
6 years agolog: remove log level config option
Pavan Nikhilesh [Sat, 9 Dec 2017 13:23:58 +0000 (18:53 +0530)]
log: remove log level config option

Remove RTE_LOG_LEVEL config option, use existing RTE_LOG_DP_LEVEL config
option for controlling datapath log level.
RTE_LOG_LEVEL is no longer needed as dynamic logging can be used to
control global and module specific log levels.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
6 years agolog: update default log levels
Pavan Nikhilesh [Sat, 9 Dec 2017 13:23:57 +0000 (18:53 +0530)]
log: update default log levels

Use global default loglevel to DEBUG(8) and dynamic default loglevel
to INFO(7).

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
6 years agolog: update legacy modules dynamic logs regex
Pavan Nikhilesh [Sat, 9 Dec 2017 13:23:56 +0000 (18:53 +0530)]
log: update legacy modules dynamic logs regex

Update legacy log types regex strings used for registering dynamic logs.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
6 years agotest: add a testcase for dynamic logs
Olivier Matz [Fri, 8 Dec 2017 13:21:22 +0000 (14:21 +0100)]
test: add a testcase for dynamic logs

Update the logs test to also validate the dynamic log framework.
For now, also keep the old way using the static USER type.

Validated with:

   # build/app/test --no-huge
   ...
   RTE>>logs_autotest
   == dynamic log types
   error message
   critical message
   critical message
   error message
   == static log types
   TESTAPP1: error message
   TESTAPP1: critical message
   TESTAPP2: critical message
   TESTAPP1: error message
   Test OK

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
6 years agotest: rely on dynamic log level to display hexdumps
Olivier Matz [Fri, 8 Dec 2017 13:21:21 +0000 (14:21 +0100)]
test: rely on dynamic log level to display hexdumps

Instead of relying on a compile-time option, use the global log-level
to decide if the hexdumps should be displayed in the tests.

Valitation:

  # build/app/test --no-huge
  RTE>>crc_autotest
  Test OK

  # build/app/test --no-huge --log-level=8
  RTE>>crc_autotest
  [many hexdumps...]
  Test OK

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
6 years agoconfig: select maximum VFIO groups on ThunderX
Pavan Nikhilesh [Fri, 29 Dec 2017 07:58:56 +0000 (13:28 +0530)]
config: select maximum VFIO groups on ThunderX

Increase the max vfio groups to 128.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
6 years agovfio: make groups max configurable
Pavan Nikhilesh [Fri, 29 Dec 2017 07:58:55 +0000 (13:28 +0530)]
vfio: make groups max configurable

Make max vfio groups compile-time configurable so that platforms can
choose vfio group limit.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agobus/fslmc: clear the vfio group on error
Hemant Agrawal [Mon, 15 Jan 2018 05:11:26 +0000 (10:41 +0530)]
bus/fslmc: clear the vfio group on error

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agovfio: expose clear group function for internal usages
Hemant Agrawal [Mon, 15 Jan 2018 05:11:25 +0000 (10:41 +0530)]
vfio: expose clear group function for internal usages

other vfio based module e.g. fslmc will also need to use
the clear_group call.
So, exposing it and renaming it to *rte_vfio_clear_group*

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>