common/mlx5: fix default devargs initialization
[dpdk.git] / doc / guides / tools / testeventdev.rst
index 46effd8..f7d8132 100644 (file)
@@ -10,19 +10,6 @@ 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.
 
-Compiling the Application
--------------------------
-
-**Build the application**
-
-Execute the ``dpdk-setup.sh`` script to build the DPDK library together with the
-``dpdk-test-eventdev`` application.
-
-Initially, the user must select a DPDK target to choose the correct target type
-and compiler options to use when building the libraries.
-The user must have all libraries, modules, updates and compilers installed
-in the system prior to this,
-as described in the earlier chapters in this Getting Started Guide.
 
 Running the Application
 -----------------------
@@ -70,6 +57,8 @@ The following are the application command-line options:
          order_atq
          perf_queue
          perf_atq
+         pipeline_atq
+         pipeline_queue
 
 * ``--socket_id <n>``
 
@@ -127,31 +116,89 @@ The following are the application command-line options:
 
         Use event timer adapter as producer.
 
- * ``--prod_type_timerdev_burst``
+* ``--prod_type_timerdev_burst``
+
+       Use burst mode event timer adapter as producer.
+
+* ``--prod_type_cryptodev``
+
+        Use crypto device as producer.
+
+* ``--timer_tick_nsec``
+
+       Used to dictate number of nano seconds between bucket traversal of the
+       event timer adapter. Refer `rte_event_timer_adapter_conf`.
+
+* ``--max_tmo_nsec``
+
+       Used to configure event timer adapter max arm timeout in nano seconds.
+
+* ``--expiry_nsec``
+
+       Dictate the number of nano seconds after which the event timer expires.
+
+* ``--nb_timers``
+
+       Number of event timers each producer core will generate.
+
+* ``--nb_timer_adptrs``
+
+       Number of event timer adapters to be used. Each adapter is used in
+       round robin manner by the producer cores.
+
+* ``--deq_tmo_nsec``
+
+       Global dequeue timeout for all the event ports if the provided dequeue
+       timeout is out of the supported range of event device it will be
+       adjusted to the highest/lowest supported dequeue timeout supported.
+
+* ``--crypto_adptr_mode``
+
+        Set crypto adapter mode. Use 0 for OP_NEW (default) and 1 for
+        OP_FORWARD mode.
+
+* ``--mbuf_sz``
 
-        Use burst mode event timer adapter as producer.
+       Set packet mbuf size. Can be used to configure Jumbo Frames. Only
+       applicable for `pipeline_atq` and `pipeline_queue` tests.
 
- * ``--timer_tick_nsec``
+* ``--max_pkt_sz``
 
-        Used to dictate number of nano seconds between bucket traversal of the
-        event timer adapter. Refer `rte_event_timer_adapter_conf`.
+       Set max packet mbuf size. Can be used to configure Rx/Tx scatter gather.
+       Only applicable for `pipeline_atq` and `pipeline_queue` tests.
 
- * ``--max_tmo_nsec``
+* ``--prod_enq_burst_sz``
 
-        Used to configure event timer adapter max arm timeout in nano seconds.
+       Set producer enqueue burst size. Can be used to configure the number of
+       events the producer(s) will enqueue as a burst to the event device.
+       Only applicable for `perf_queue` test.
 
- * ``--expiry_nsec``
+* ``--nb_eth_queues``
 
-        Dictate the number of nano seconds after which the event timer expires.
+       Configure multiple Rx queues per each ethernet port.
+       Only applicable for `pipeline_atq` and `pipeline_queue` tests.
 
- * ``--nb_timers``
+* ``--enable_vector``
 
-        Number of event timers each producer core will generate.
+       Enable event vector for Rx/Tx adapters.
+       Only applicable for `pipeline_atq` and `pipeline_queue` tests.
 
- * ``--nb_timer_adptrs``
+* ``--vector_size``
+
+       Vector size to configure for the Rx adapter.
+       Only applicable for `pipeline_atq` and `pipeline_queue` tests.
+
+* ``--vector_tmo_ns``
+
+       Vector timeout nanoseconds to be configured for the Rx adapter.
+       Only applicable for `pipeline_atq` and `pipeline_queue` tests.
+
+* ``--per_port_pool``
+
+        Configure unique mempool per ethernet device, the size of each pool
+        is equal to `pool_sz`.
+        Only applicable for pipeline_atq` and `pipeline_queue` tests.
 
-        Number of event timer adapters to be used. Each adapter is used in
-        round robin manner by the producer cores.
 
 Eventdev Tests
 --------------
@@ -201,7 +248,7 @@ 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 downstream atomic queue enqueue. On enqueue to the
-atomic queue, the eventdev PMD driver reorders the event to the original
+atomic queue, the eventdev PMD 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
@@ -223,6 +270,7 @@ Supported application command line options are following::
    --nb_flows
    --nb_pkts
    --worker_deq_depth
+   --deq_tmo_nsec
 
 Example
 ^^^^^^^
@@ -231,7 +279,7 @@ Example command to run order queue test:
 
 .. code-block:: console
 
-   sudo build/app/dpdk-test-eventdev --vdev=event_sw0 -- \
+   sudo <build_dir>/app/dpdk-test-eventdev --vdev=event_sw0 -- \
                 --test=order_queue --plcores 1 --wlcores 2,3
 
 
@@ -285,6 +333,7 @@ Supported application command line options are following::
    --nb_flows
    --nb_pkts
    --worker_deq_depth
+   --deq_tmo_nsec
 
 Example
 ^^^^^^^
@@ -293,7 +342,7 @@ Example command to run order ``all types queue`` test:
 
 .. code-block:: console
 
-   sudo build/app/dpdk-test-eventdev --vdev=event_octeontx -- \
+   sudo <build_dir>/app/dpdk-test-eventdev --vdev=event_octeontx -- \
                         --test=order_atq --plcores 1 --wlcores 2,3
 
 
@@ -340,8 +389,9 @@ 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.
+The producer(s) injects the events to eventdev based on the first stage sched type
+list requested by the user through ``--stlist`` command line argument. It can
+inject a burst of events using ``--prod_enq_burst_sz`` 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
@@ -379,11 +429,15 @@ Supported application command line options are following::
         --prod_type_ethdev
         --prod_type_timerdev_burst
         --prod_type_timerdev
+        --prod_type_cryptodev
+        --prod_enq_burst_sz
         --timer_tick_nsec
         --max_tmo_nsec
         --expiry_nsec
         --nb_timers
         --nb_timer_adptrs
+        --deq_tmo_nsec
+        --crypto_adptr_mode
 
 Example
 ^^^^^^^
@@ -392,9 +446,17 @@ Example command to run perf queue test:
 
 .. code-block:: console
 
-   sudo build/app/dpdk-test-eventdev -c 0xf -s 0x1 --vdev=event_sw0 -- \
+   sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x1 --vdev=event_sw0 -- \
         --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0
 
+Example command to run perf queue test with producer enqueuing a burst of events:
+
+.. code-block:: console
+
+   sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x1 --vdev=event_sw0 -- \
+        --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0 \
+        --prod_enq_burst_sz=32
+
 Example command to run perf queue test with ethernet ports:
 
 .. code-block:: console
@@ -406,7 +468,7 @@ Example command to run perf queue test with event timer adapter:
 
 .. code-block:: console
 
-   sudo  build/app/dpdk-test-eventdev --vdev="event_octeontx" -- \
+   sudo  <build_dir>/app/dpdk-test-eventdev --vdev="event_octeontx" -- \
                 --wlcores 4 --plcores 12 --test perf_queue --stlist=a \
                 --prod_type_timerdev --fwd_latency
 
@@ -478,11 +540,14 @@ Supported application command line options are following::
         --prod_type_ethdev
         --prod_type_timerdev_burst
         --prod_type_timerdev
+        --prod_type_cryptodev
         --timer_tick_nsec
         --max_tmo_nsec
         --expiry_nsec
         --nb_timers
         --nb_timer_adptrs
+        --deq_tmo_nsec
+        --crypto_adptr_mode
 
 Example
 ^^^^^^^
@@ -491,14 +556,14 @@ Example command to run perf ``all types queue`` test:
 
 .. code-block:: console
 
-   sudo build/app/dpdk-test-eventdev --vdev=event_octeontx -- \
+   sudo <build_dir>/app/dpdk-test-eventdev --vdev=event_octeontx -- \
                 --test=perf_atq --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0
 
 Example command to run perf ``all types queue`` test with event timer adapter:
 
 .. code-block:: console
 
-   sudo  build/app/dpdk-test-eventdev --vdev="event_octeontx" -- \
+   sudo  <build_dir>/app/dpdk-test-eventdev --vdev="event_octeontx" -- \
                 --wlcores 4 --plcores 12 --test perf_atq --verbose 20 \
                 --stlist=a --prod_type_timerdev --fwd_latency
 
@@ -521,8 +586,9 @@ This is a pipeline test case that aims at testing the following:
    +===+==============+================+=========================================+
    | 1 | nb_queues    | (nb_producers  | Queues will be configured based on the  |
    |   |              | * nb_stages) + | user requested sched type list(--stlist)|
-   |   |              | x              | Here value of x is 1 in generic pipeline|
-   |   |              |                | and nb_producers in lockfree pipeline   |
+   |   |              | nb_producers   | At the last stage of the schedule list  |
+   |   |              |                | the event is enqueued onto per port     |
+   |   |              |                | unique queue which is then Transmitted. |
    +---+--------------+----------------+-----------------------------------------+
    | 2 | nb_producers | >= 1           | Producers will be configured based on   |
    |   |              |                | the number of detected ethernet devices.|
@@ -533,17 +599,19 @@ This is a pipeline test case that aims at testing the following:
    |   |              |                | argument                                |
    +---+--------------+----------------+-----------------------------------------+
    | 4 | nb_ports     | nb_workers +   | Workers use port 0 to port n.           |
-   |   |              | nb_producers   | Producers use port n+1 to port n+m,     |
-   |   |              |                | depending on the Rx adapter capability. |
+   |   |              | (nb_produces * | Producers use port n+1 to port n+m,     |
+   |   |              | 2)             | depending on the Rx adapter capability. |
+   |   |              |                | Consumers use port n+m+1 to port n+o    |
+   |   |              |                | depending on the Tx adapter capability. |
    +---+--------------+----------------+-----------------------------------------+
 
 .. _figure_eventdev_pipeline_queue_test_generic:
 
 .. figure:: img/eventdev_pipeline_queue_test_generic.*
 
-.. _figure_eventdev_pipeline_queue_test_lockfree:
+.. _figure_eventdev_pipeline_queue_test_internal_port:
 
-.. figure:: img/eventdev_pipeline_queue_test_lockfree.*
+.. figure:: img/eventdev_pipeline_queue_test_internal_port.*
 
    pipeline queue test operation.
 
@@ -568,10 +636,11 @@ the 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.
 
-If the ethernet has ``DEV_TX_OFFLOAD_MT_LOCKFREE`` capability then the worker
-cores transmit the packets directly. Else the worker cores enqueue the packet
-onto the ``SINGLE_LINK_QUEUE`` that is managed by a Tx service. The Tx service
-dequeues the packet and transmits it.
+If the ethdev and eventdev pair have ``RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT``
+capability then the worker cores enqueue the packets to the eventdev directly
+using ``rte_event_eth_tx_adapter_enqueue`` else the worker cores enqueue the
+packet onto the ``SINGLE_LINK_QUEUE`` that is managed by the Tx adapter.
+The Tx adapter dequeues the packet and transmits it.
 
 On packet Tx, application increments the number events processed and print
 periodically in one second to get the number of events processed in one
@@ -592,6 +661,12 @@ Supported application command line options are following::
         --stlist
         --worker_deq_depth
         --prod_type_ethdev
+        --deq_tmo_nsec
+        --nb_eth_queues
+        --enable_vector
+        --vector_size
+        --vector_tmo_ns
+        --per_port_pool
 
 
 .. Note::
@@ -605,9 +680,16 @@ Example command to run pipeline queue test:
 
 .. code-block:: console
 
-    sudo build/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
+    sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
         --test=pipeline_queue --wlcore=1 --prod_type_ethdev --stlist=a
 
+Example command to run pipeline atq test with vector events:
+
+.. code-block:: console
+
+    sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
+        --test=pipeline_queue --wlcore=1 --prod_type_ethdev --stlist=a \
+        --enable_vector  --vector_size 512
 
 PIPELINE_ATQ Test
 ~~~~~~~~~~~~~~~~~~~
@@ -628,8 +710,9 @@ This is a pipeline test case that aims at testing the following with
    +===+==============+================+=========================================+
    | 1 | nb_queues    | nb_producers + | Queues will be configured based on the  |
    |   |              | x              | user requested sched type list(--stlist)|
-   |   |              |                | where x = 1 in generic pipeline and 0   |
-   |   |              |                | in lockfree pipeline                    |
+   |   |              |                | where x = nb_producers in generic       |
+   |   |              |                | pipeline and 0 if all the ethdev        |
+   |   |              |                | being used have Internal port capability|
    +---+--------------+----------------+-----------------------------------------+
    | 2 | nb_producers | >= 1           | Producers will be configured based on   |
    |   |              |                | the number of detected ethernet devices.|
@@ -640,17 +723,22 @@ This is a pipeline test case that aims at testing the following with
    |   |              |                | argument                                |
    +---+--------------+----------------+-----------------------------------------+
    | 4 | nb_ports     | nb_workers +   | Workers use port 0 to port n.           |
-   |   |              | nb_producers   | Producers use port n+1 to port n+m,     |
-   |   |              |                | depending on the Rx adapter capability. |
+   |   |              | nb_producers + | Producers use port n+1 to port n+m,     |
+   |   |              | x              | depending on the Rx adapter capability. |
+   |   |              |                | x = nb_producers in generic pipeline and|
+   |   |              |                | 0 if all the ethdev being used have     |
+   |   |              |                | Internal port capability.               |
+   |   |              |                | Consumers may use port n+m+1 to port n+o|
+   |   |              |                | depending on the Tx adapter capability. |
    +---+--------------+----------------+-----------------------------------------+
 
 .. _figure_eventdev_pipeline_atq_test_generic:
 
 .. figure:: img/eventdev_pipeline_atq_test_generic.*
 
-.. _figure_eventdev_pipeline_atq_test_lockfree:
+.. _figure_eventdev_pipeline_atq_test_internal_port:
 
-.. figure:: img/eventdev_pipeline_atq_test_lockfree.*
+.. figure:: img/eventdev_pipeline_atq_test_internal_port.*
 
    pipeline atq test operation.
 
@@ -677,6 +765,12 @@ Supported application command line options are following::
         --stlist
         --worker_deq_depth
         --prod_type_ethdev
+        --deq_tmo_nsec
+        --nb_eth_queues
+        --enable_vector
+        --vector_size
+        --vector_tmo_ns
+        --per_port_pool
 
 
 .. Note::
@@ -686,9 +780,17 @@ Supported application command line options are following::
 Example
 ^^^^^^^
 
-Example command to run pipeline queue test:
+Example command to run pipeline atq test:
 
 .. code-block:: console
 
-    sudo build/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
+    sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
         --test=pipeline_atq --wlcore=1 --prod_type_ethdev --stlist=a
+
+Example command to run pipeline atq test with vector events:
+
+.. code-block:: console
+
+    sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
+        --test=pipeline_atq --wlcore=1 --prod_type_ethdev --stlist=a \
+        --enable_vector  --vector_size 512