1.. SPDX-License-Identifier: BSD-3-Clause 2 Copyright(c) 2018 Ericsson AB 3 4Distributed Software Eventdev Poll Mode Driver 5============================================== 6 7The distributed software event device is an eventdev driver which 8distributes the task of scheduling events among all the eventdev ports 9and the lcore threads using them. 10 11Features 12-------- 13 14Queues 15 * Atomic 16 * Parallel 17 * Single-Link 18 19Ports 20 * Load balanced (for Atomic, Ordered, Parallel queues) 21 * Single Link (for single-link queues) 22 23Configuration and Options 24------------------------- 25 26The distributed software eventdev is a vdev device, and as such can be 27created from the application code, or from the EAL command line: 28 29* Call ``rte_vdev_init("event_dsw0")`` from the application 30 31* Use ``--vdev="event_dsw0"`` in the EAL options, which will call 32 rte_vdev_init() internally 33 34Example: 35 36.. code-block:: console 37 38 ./your_eventdev_application --vdev="event_dsw0" 39 40Limitations 41----------- 42 43Port Maintenance 44~~~~~~~~~~~~~~~~ 45 46The distributed software eventdev uses an internal signaling scheme 47between the ports to achieve load balancing. Therefore, it does not 48set the ``RTE_EVENT_DEV_CAP_MAINTENANCE_FREE`` flag. 49 50During periods when the application thread using a particular port is 51neither attempting to enqueue nor to dequeue events, it must 52repeatedly call rte_event_maintain() on that port. 53 54Ports left unmaintained for long periods of time will prevent load 55balancing and cause traffic interruptions on flows which are in the 56process of being migrated. 57 58Output Buffering 59~~~~~~~~~~~~~~~~ 60 61For efficiency reasons, the distributed software eventdev might not 62send enqueued events immediately to the destination port, but instead 63store them in an internal buffer in the source port. 64 65In case no more events are enqueued on a port with buffered events, 66these events will be sent after the application has performed a number 67of enqueue and/or dequeue operations. 68 69To immediately flush a port's output buffer, an application may call 70rte_event_maintain() with op set to ``RTE_EVENT_DEV_MAINT_OP_FLUSH``. 71 72Repeated calls to rte_event_maintain() will also flush the output 73buffers. 74 75 76Priorities 77~~~~~~~~~~ 78 79The distributed software eventdev does not support event priorities. 80 81Ordered Queues 82~~~~~~~~~~~~~~ 83 84The distributed software eventdev does not support the ordered queue type. 85 86 87"All Types" Queues 88~~~~~~~~~~~~~~~~~~ 89 90The distributed software eventdev does not support queues of type 91RTE_EVENT_QUEUE_CFG_ALL_TYPES, which allow both atomic, ordered, and 92parallel events on the same queue. 93 94Dynamic Link/Unlink 95~~~~~~~~~~~~~~~~~~~ 96 97The distributed software eventdev does not support calls to 98rte_event_port_link() or rte_event_port_unlink() after 99rte_event_dev_start() has been called. 100