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 43Unattended Ports 44~~~~~~~~~~~~~~~~ 45 46The distributed software eventdev uses an internal signaling schema 47between the ports to achieve load balancing. In order for this to 48work, the application must perform enqueue and/or dequeue operations 49on all ports. 50 51Producer-only ports which currently have no events to enqueue should 52periodically call rte_event_enqueue_burst() with a zero-sized burst. 53 54Ports left unattended for longer periods of time will prevent load 55balancing, and also cause traffic interruptions on the flows which 56are in the process 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 69For explicit flushing, an application may call 70rte_event_enqueue_burst() with a zero-sized burst. 71 72 73Priorities 74~~~~~~~~~~ 75 76The distributed software eventdev does not support event priorities. 77 78Ordered Queues 79~~~~~~~~~~~~~~ 80 81The distributed software eventdev does not support the ordered queue type. 82 83 84"All Types" Queues 85~~~~~~~~~~~~~~~~~~ 86 87The distributed software eventdev does not support queues of type 88RTE_EVENT_QUEUE_CFG_ALL_TYPES, which allow both atomic, ordered, and 89parallel events on the same queue. 90 91Dynamic Link/Unlink 92~~~~~~~~~~~~~~~~~~~ 93 94The distributed software eventdev does not support calls to 95rte_event_port_link() or rte_event_port_unlink() after 96rte_event_dev_start() has been called. 97