doc: update DLB2 guide

Updated DLB2 guide to document following features.
1) CQ Weight
2) Port COS
3) Maximum CQ depth
4) Maximum enqueue depth

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
This commit is contained in:
Timothy McDaniel 2022-07-02 14:35:00 -05:00 committed by Jerin Jacob
parent 5408915170
commit c14106dd92

View File

@ -343,23 +343,21 @@ Class of service
~~~~~~~~~~~~~~~~
DLB supports provisioning the DLB bandwidth into 4 classes of service.
A LDB port or range of LDB ports may be configured to use one of the classes.
If a port's COS is not defined, then it will be allocated from class 0,
class 1, class 2, or class 3, in that order, depending on availability.
- Class 4 corresponds to 40% of the DLB hardware bandwidth
- Class 3 corresponds to 30% of the DLB hardware bandwidth
- Class 2 corresponds to 20% of the DLB hardware bandwidth
- Class 1 corresponds to 10% of the DLB hardware bandwidth
- Class 0 corresponds to don't care
The classes are applied globally to the set of ports contained in this
scheduling domain, which is more appropriate for the bifurcated
PMD than for the PF PMD, since the PF PMD supports just 1 scheduling
domain.
Class of service can be specified in the devargs, as follows
The sum of the cos_bw values may not exceed 100, and no more than
16 LDB ports may be assigned to a given class of service. If port cos is
not defined on the command line, then each class is assigned 25% of the
bandwidth, and the available load balanced ports are split between the classes.
Per-port class of service and bandwidth can be specified in the devargs,
as follows.
.. code-block:: console
--allow ea:00.0,cos=<0..4>
--allow ea:00.0,port_cos=Px-Py:<0-3>,cos_bw=5:10:80:5
--allow ea:00.0,port_cos=Px:<0-3>,cos_bw=5:10:80:5
Use X86 Vector Instructions
~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -373,3 +371,46 @@ follows
.. code-block:: console
--allow ea:00.0,vector_opts_enabled=<y/Y>
Maximum CQ Depth
~~~~~~~~~~~~~~~~
DLB supports configuring the maximum depth of a consumer queue (CQ).
The depth must be between 32 and 128, and must be a power of 2. Note
that credit deadlocks may occur as a result of changing the default depth.
To prevent deadlock, the user may also need to configure the maximum
enqueue depth.
.. code-block:: console
--allow ea:00.0,max_cq_depth=<depth>
Maximum Enqueue Depth
~~~~~~~~~~~~~~~~~~~~~
DLB supports configuring the maximum enqueue depth of a producer port (PP).
The depth must be between 32 and 1024, and must be a power of 2.
.. code-block:: console
--allow ea:00.0,max_enqueue_depth=<depth>
QE Weight
~~~~~~~~~
DLB supports advanced scheduling mechanisms, such as CQ weight.
Each load balanced CQ has a configurable work capacity (max 256)
which corresponds to the total QE weight DLB will allow to be enqueued
to that consumer. Every load balanced event/QE carries a weight of 0, 2, 4,
or 8 and DLB will increment a (per CQ) load indicator when it schedules a
QE to that CQ. The weight is also stored in the history list. When a
completion arrives, the weight is popped from the history list and used to
decrement the load indicator. This creates a new scheduling condition - a CQ
whose load is equal to or in excess of capacity is not available for traffic.
Note that the weight may not exceed the maximum CQ depth.
.. code-block:: console
--allow ea:00.0,cq_weight=all:<weight>
--allow ea:00.0,cq_weight=qidA-qidB:<weight>
--allow ea:00.0,cq_weight=qid:<weight>