xref: /dpdk/doc/guides/eventdevs/octeontx.rst (revision 131a75b6e4df60586103d71defb85dcf9f77fb17)
1..  BSD LICENSE
2    Copyright (C) Cavium, Inc. 2017.
3    All rights reserved.
4
5    Redistribution and use in source and binary forms, with or without
6    modification, are permitted provided that the following conditions
7    are met:
8
9    * Redistributions of source code must retain the above copyright
10    notice, this list of conditions and the following disclaimer.
11    * Redistributions in binary form must reproduce the above copyright
12    notice, this list of conditions and the following disclaimer in
13    the documentation and/or other materials provided with the
14    distribution.
15    * Neither the name of Cavium, Inc nor the names of its
16    contributors may be used to endorse or promote products derived
17    from this software without specific prior written permission.
18
19    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31OCTEONTX SSOVF Eventdev Driver
32==============================
33
34The OCTEONTX SSOVF PMD (**librte_pmd_octeontx_ssovf**) provides poll mode
35eventdev driver support for the inbuilt event device found in the **Cavium OCTEONTX**
36SoC family as well as their virtual functions (VF) in SR-IOV context.
37
38More information can be found at `Cavium, Inc Official Website
39<http://www.cavium.com/OCTEON-TX_ARM_Processors.html>`_.
40
41Features
42--------
43
44Features of the OCTEONTX SSOVF PMD are:
45
46- 64 Event queues
47- 32 Event ports
48- HW event scheduler
49- Supports 1M flows per event queue
50- Flow based event pipelining
51- Flow pinning support in flow based event pipelining
52- Queue based event pipelining
53- Supports ATOMIC, ORDERED, PARALLEL schedule types per flow
54- Event scheduling QoS based on event queue priority
55- Open system with configurable amount of outstanding events
56- HW accelerated dequeue timeout support to enable power management
57- SR-IOV VF
58
59Supported OCTEONTX SoCs
60-----------------------
61- CN83xx
62
63Prerequisites
64-------------
65
66See :doc: `../platform/octeontx` for setup information.
67
68Pre-Installation Configuration
69------------------------------
70
71Config File Options
72~~~~~~~~~~~~~~~~~~~
73
74The following options can be modified in the ``config`` file.
75Please note that enabling debugging options may affect system performance.
76
77- ``CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF`` (default ``y``)
78
79  Toggle compilation of the ``librte_pmd_octeontx_ssovf`` driver.
80
81- ``CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG`` (default ``n``)
82
83  Toggle display of generic debugging messages
84
85Driver Compilation
86~~~~~~~~~~~~~~~~~~
87
88To compile the OCTEONTX SSOVF PMD for Linux arm64 gcc target, run the
89following ``make`` command:
90
91.. code-block:: console
92
93   cd <DPDK-source-directory>
94   make config T=arm64-thunderx-linuxapp-gcc install
95
96
97Initialization
98--------------
99
100The octeontx eventdev is exposed as a vdev device which consists of a set
101of SSO group and work-slot PCIe VF devices. On EAL initialization,
102SSO PCIe VF devices will be probed and then the vdev device can be created
103from the application code, or from the EAL command line based on
104the number of probed/bound SSO PCIe VF device to DPDK by
105
106* Invoking ``rte_vdev_init("event_octeontx")`` from the application
107
108* Using ``--vdev="event_octeontx"`` in the EAL options, which will call
109  rte_vdev_init() internally
110
111Example:
112
113.. code-block:: console
114
115    ./your_eventdev_application --vdev="event_octeontx"
116
117Limitations
118-----------
119
120Burst mode support
121~~~~~~~~~~~~~~~~~~
122
123Burst mode is not supported. Dequeue and Enqueue functions accepts only single
124event at a time.
125
126Rx adapter support
127~~~~~~~~~~~~~~~~~~
128
129When eth_octeontx is used as Rx adapter event schedule type
130``RTE_SCHED_TYPE_PARALLEL`` is not supported.
131