xref: /f-stack/dpdk/doc/guides/eventdevs/dsw.rst (revision d30ea906)
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