xref: /dpdk/doc/guides/nics/mvpp2.rst (revision 41dd9a6bc2d9c6e20e139ad713cc9d172572dd43)
112e10bd0SJerin Jacob..  SPDX-License-Identifier: BSD-3-Clause
2fe939687SNatalie Samsonov    Copyright(c) 2017 Marvell International Ltd.
3fe939687SNatalie Samsonov    Copyright(c) 2017 Semihalf.
4fe939687SNatalie Samsonov
5fe939687SNatalie Samsonov.. _mvpp2_poll_mode_driver:
6fe939687SNatalie Samsonov
7fe939687SNatalie SamsonovMVPP2 Poll Mode Driver
8fe939687SNatalie Samsonov======================
9fe939687SNatalie Samsonov
108809f78cSBruce RichardsonThe MVPP2 PMD (**librte_net_mvpp2**) provides poll mode driver support
11fe939687SNatalie Samsonovfor the Marvell PPv2 (Packet Processor v2) 1/10 Gbps adapter.
12fe939687SNatalie Samsonov
13fe939687SNatalie SamsonovDetailed information about SoCs that use PPv2 can be obtained here:
14fe939687SNatalie Samsonov
15fe939687SNatalie Samsonov* https://www.marvell.com/embedded-processors/armada-70xx/
16fe939687SNatalie Samsonov* https://www.marvell.com/embedded-processors/armada-80xx/
17fe939687SNatalie Samsonov
18fe939687SNatalie Samsonov
19fe939687SNatalie SamsonovFeatures
20fe939687SNatalie Samsonov--------
21fe939687SNatalie Samsonov
22fe939687SNatalie SamsonovFeatures of the MVPP2 PMD are:
23fe939687SNatalie Samsonov
24fe939687SNatalie Samsonov- Speed capabilities
25fe939687SNatalie Samsonov- Link status
260ba610caSNatalie Samsonov- Tx Queue start/stop
27fe939687SNatalie Samsonov- MTU update
28fe939687SNatalie Samsonov- Jumbo frame
29fe939687SNatalie Samsonov- Promiscuous mode
30fe939687SNatalie Samsonov- Allmulticast mode
31fe939687SNatalie Samsonov- Unicast MAC filter
32fe939687SNatalie Samsonov- Multicast MAC filter
33fe939687SNatalie Samsonov- RSS hash
34fe939687SNatalie Samsonov- VLAN filter
35fe939687SNatalie Samsonov- CRC offload
36fe939687SNatalie Samsonov- L3 checksum offload
37fe939687SNatalie Samsonov- L4 checksum offload
38fe939687SNatalie Samsonov- Packet type parsing
39fe939687SNatalie Samsonov- Basic stats
400ba610caSNatalie Samsonov- :ref:`Extended stats <extstats>`
41fe939687SNatalie Samsonov- RX flow control
42e04ec42aSTomasz Duszynski- Scattered TX frames
43c2b5ae61SLiron Himi- :ref:`QoS <extconf>`
440ba610caSNatalie Samsonov- :ref:`Flow API <flowapi>`
450ba610caSNatalie Samsonov- :ref:`Traffic metering and policing <mtrapi>`
460ba610caSNatalie Samsonov- :ref:`Traffic Management API <tmapi>`
47fe939687SNatalie Samsonov
48fe939687SNatalie SamsonovLimitations
49fe939687SNatalie Samsonov-----------
50fe939687SNatalie Samsonov
51fe939687SNatalie Samsonov- Number of lcores is limited to 9 by MUSDK internal design. If more lcores
52fe939687SNatalie Samsonov  need to be allocated, locking will have to be considered. Number of available
53fe939687SNatalie Samsonov  lcores can be changed via ``MRVL_MUSDK_HIFS_RESERVED`` define in
54fe939687SNatalie Samsonov  ``mrvl_ethdev.c`` source file.
55fe939687SNatalie Samsonov
56fe939687SNatalie Samsonov- Flushing vlans added for filtering is not possible due to MUSDK missing
57fe939687SNatalie Samsonov  functionality. Current workaround is to reset board so that PPv2 has a
58fe939687SNatalie Samsonov  chance to start in a sane state.
59fe939687SNatalie Samsonov
600ba610caSNatalie Samsonov- MUSDK architecture does not support changing configuration in run time.
61d629b7b5SJohn McNamara  All necessary configurations should be done before first dev_start().
620ba610caSNatalie Samsonov
630ba610caSNatalie Samsonov- RX queue start/stop is not supported.
640ba610caSNatalie Samsonov
650ba610caSNatalie Samsonov- Current implementation does not support replacement of buffers in the HW buffer pool
660ba610caSNatalie Samsonov  at run time, so it is responsibility of the application to ensure that MTU does not exceed the configured buffer size.
670ba610caSNatalie Samsonov
680ba610caSNatalie Samsonov- Configuring TX flow control currently is not supported.
690ba610caSNatalie Samsonov
700ba610caSNatalie Samsonov- In current implementation, mechanism for acknowledging transmitted packets (``tx_done_cleanup``) is not supported.
710ba610caSNatalie Samsonov
720ba610caSNatalie Samsonov- Running more than one DPDK-MUSDK application simultaneously is not supported.
730ba610caSNatalie Samsonov
74fe939687SNatalie Samsonov
75fe939687SNatalie SamsonovPrerequisites
76fe939687SNatalie Samsonov-------------
77fe939687SNatalie Samsonov
78fe939687SNatalie Samsonov- Custom Linux Kernel sources
79fe939687SNatalie Samsonov
80fe939687SNatalie Samsonov  .. code-block:: console
81fe939687SNatalie Samsonov
82e04ec42aSTomasz Duszynski     git clone https://github.com/MarvellEmbeddedProcessors/linux-marvell.git -b linux-4.4.120-armada-18.09
83fe939687SNatalie Samsonov
84fe939687SNatalie Samsonov- Out of tree `mvpp2x_sysfs` kernel module sources
85fe939687SNatalie Samsonov
86fe939687SNatalie Samsonov  .. code-block:: console
87fe939687SNatalie Samsonov
88e04ec42aSTomasz Duszynski     git clone https://github.com/MarvellEmbeddedProcessors/mvpp2x-marvell.git -b mvpp2x-armada-18.09
89fe939687SNatalie Samsonov
90fe939687SNatalie Samsonov- MUSDK (Marvell User-Space SDK) sources
91fe939687SNatalie Samsonov
92fe939687SNatalie Samsonov  .. code-block:: console
93fe939687SNatalie Samsonov
947432c8cfSLiron Himi     git clone https://github.com/MarvellEmbeddedProcessors/musdk-marvell.git -b musdk-release-SDK-10.3.5.0-PR2
95fe939687SNatalie Samsonov
96fe939687SNatalie Samsonov  MUSDK is a light-weight library that provides direct access to Marvell's
97fe939687SNatalie Samsonov  PPv2 (Packet Processor v2). Alternatively prebuilt MUSDK library can be
98fe939687SNatalie Samsonov  requested from `Marvell Extranet <https://extranet.marvell.com>`_. Once
99fe939687SNatalie Samsonov  approval has been granted, library can be found by typing ``musdk`` in
100fe939687SNatalie Samsonov  the search box.
101fe939687SNatalie Samsonov
102fe939687SNatalie Samsonov  To get better understanding of the library one can consult documentation
103fe939687SNatalie Samsonov  available in the ``doc`` top level directory of the MUSDK sources.
104fe939687SNatalie Samsonov
105fe939687SNatalie Samsonov- DPDK environment
106fe939687SNatalie Samsonov
107fe939687SNatalie Samsonov  Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup
108fe939687SNatalie Samsonov  DPDK environment.
109fe939687SNatalie Samsonov
110fe939687SNatalie Samsonov
1117432c8cfSLiron HimiBuilding MUSDK
1127432c8cfSLiron Himi--------------
1130ba610caSNatalie Samsonov
1140ba610caSNatalie SamsonovDriver needs precompiled MUSDK library during compilation.
1150ba610caSNatalie Samsonov
1160ba610caSNatalie Samsonov.. code-block:: console
1170ba610caSNatalie Samsonov
1180ba610caSNatalie Samsonov   export CROSS_COMPILE=<toolchain>/bin/aarch64-linux-gnu-
1190ba610caSNatalie Samsonov   ./bootstrap
1200ba610caSNatalie Samsonov   ./configure --host=aarch64-linux-gnu
1210ba610caSNatalie Samsonov   make install
1220ba610caSNatalie Samsonov
1230ba610caSNatalie SamsonovMUSDK will be installed to `usr/local` under current directory.
1240ba610caSNatalie SamsonovFor the detailed build instructions please consult ``doc/musdk_get_started.txt``.
1250ba610caSNatalie Samsonov
1260ba610caSNatalie Samsonov
1277432c8cfSLiron HimiBuilding DPDK
1287432c8cfSLiron Himi-------------
1297432c8cfSLiron Himi
1307432c8cfSLiron HimiAdd path to libmusdk.pc in PKG_CONFIG_PATH environment variable.
1310ba610caSNatalie Samsonov
1320ba610caSNatalie Samsonov.. code-block:: console
1330ba610caSNatalie Samsonov
1347432c8cfSLiron Himi   export PKG_CONFIG_PATH=$<musdk_install_dir>/lib/pkgconfig/:$PKG_CONFIG_PATH
1357432c8cfSLiron Himi
136e24b8ad4SStephen Hemminger   meson setup build --cross-file config/arm/arm64_armada_linux_gcc
1377432c8cfSLiron Himi   ninja -C build
1380ba610caSNatalie Samsonov
1390ba610caSNatalie Samsonov
1400ba610caSNatalie SamsonovUsage Example
1410ba610caSNatalie Samsonov-------------
1420ba610caSNatalie Samsonov
1430ba610caSNatalie SamsonovMVPP2 PMD requires extra out of tree kernel modules to function properly.
1440ba610caSNatalie Samsonov`musdk_cma` sources are part of the MUSDK. Please consult
1450ba610caSNatalie Samsonov``doc/musdk_get_started.txt`` for the detailed build instructions.
1460ba610caSNatalie SamsonovFor `mvpp2x_sysfs` please consult ``Documentation/pp22_sysfs.txt`` for the
1470ba610caSNatalie Samsonovdetailed build instructions.
1480ba610caSNatalie Samsonov
1490ba610caSNatalie Samsonov.. code-block:: console
1500ba610caSNatalie Samsonov
1510ba610caSNatalie Samsonov   insmod musdk_cma.ko
1520ba610caSNatalie Samsonov   insmod mvpp2x_sysfs.ko
1530ba610caSNatalie Samsonov
1540ba610caSNatalie SamsonovAdditionally interfaces used by DPDK application need to be put up:
1550ba610caSNatalie Samsonov
1560ba610caSNatalie Samsonov.. code-block:: console
1570ba610caSNatalie Samsonov
1580ba610caSNatalie Samsonov   ip link set eth0 up
1590ba610caSNatalie Samsonov   ip link set eth2 up
1600ba610caSNatalie Samsonov
1610ba610caSNatalie SamsonovIn order to run testpmd example application following command can be used:
1620ba610caSNatalie Samsonov
1630ba610caSNatalie Samsonov.. code-block:: console
1640ba610caSNatalie Samsonov
16568d99d00SCiara Power   ./dpdk-testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 7 -- \
1660ba610caSNatalie Samsonov     --burst=128 --txd=2048 --rxd=1024 --rxq=2 --txq=2  --nb-cores=2 \
1670ba610caSNatalie Samsonov     -i -a --rss-udp
1680ba610caSNatalie Samsonov
1690ba610caSNatalie Samsonov.. _extstats:
1700ba610caSNatalie Samsonov
1710ba610caSNatalie SamsonovExtended stats
1720ba610caSNatalie Samsonov--------------
1730ba610caSNatalie Samsonov
1740ba610caSNatalie SamsonovMVPP2 PMD supports the following extended statistics:
1750ba610caSNatalie Samsonov
1760ba610caSNatalie Samsonov	- ``rx_bytes``:	number of RX bytes
1770ba610caSNatalie Samsonov	- ``rx_packets``: number of RX packets
1780ba610caSNatalie Samsonov	- ``rx_unicast_packets``: number of RX unicast packets
1790ba610caSNatalie Samsonov	- ``rx_errors``: number of RX MAC errors
1800ba610caSNatalie Samsonov	- ``rx_fullq_dropped``: number of RX packets dropped due to full RX queue
1810ba610caSNatalie Samsonov	- ``rx_bm_dropped``: number of RX packets dropped due to no available buffers in the HW pool
1820ba610caSNatalie Samsonov	- ``rx_early_dropped``: number of RX packets that were early dropped
1830ba610caSNatalie Samsonov	- ``rx_fifo_dropped``: number of RX packets dropped due to RX fifo overrun
1840ba610caSNatalie Samsonov	- ``rx_cls_dropped``: number of RX packets dropped by classifier
1850ba610caSNatalie Samsonov	- ``tx_bytes``: number of TX bytes
1860ba610caSNatalie Samsonov	- ``tx_packets``: number of TX packets
1870ba610caSNatalie Samsonov	- ``tx_unicast_packets``: number of TX unicast packets
1880ba610caSNatalie Samsonov	- ``tx_errors``: number of TX MAC errors
1890ba610caSNatalie Samsonov
1900ba610caSNatalie Samsonov
191c2b5ae61SLiron Himi.. _extconf:
1920ba610caSNatalie Samsonov
193c2b5ae61SLiron HimiExternal Configuration
194c2b5ae61SLiron Himi----------------------
195fe939687SNatalie Samsonov
196c2b5ae61SLiron HimiSeveral driver configuration (e.g. QoS) can be done through external configuration file. Path to the
197fe939687SNatalie Samsonovfile must be given as `cfg` in driver's vdev parameter list.
198fe939687SNatalie Samsonov
199fe939687SNatalie SamsonovConfiguration syntax
200fe939687SNatalie Samsonov~~~~~~~~~~~~~~~~~~~~
201fe939687SNatalie Samsonov
202fe939687SNatalie Samsonov.. code-block:: console
203fe939687SNatalie Samsonov
204e97d8874STomasz Duszynski   [policer <policer_id>]
205fe939687SNatalie Samsonov   token_unit = <token_unit>
206fe939687SNatalie Samsonov   color = <color_mode>
207fe939687SNatalie Samsonov   cir = <cir>
208fe939687SNatalie Samsonov   ebs = <ebs>
209fe939687SNatalie Samsonov   cbs = <cbs>
210fe939687SNatalie Samsonov
2113e09b2a7SLiron Himi   [parser udf <udf_id>]
2123e09b2a7SLiron Himi   proto = <proto>
2133e09b2a7SLiron Himi   field = <field>
2143e09b2a7SLiron Himi   key = <key>
2153e09b2a7SLiron Himi   mask = <mask>
2163e09b2a7SLiron Himi   offset = <offset>
2173e09b2a7SLiron Himi
218e97d8874STomasz Duszynski   [port <portnum> default]
2196000b5beSDana Vardi   start_hdr = <start_hdr>
220ef08031fSDana Vardi   forward_bad_frames = <forward_bad_frames>
2214b86050aSDana Vardi   fill_bpool_buffs = <fill_bpool_buffs>
222e97d8874STomasz Duszynski   default_tc = <default_tc>
223e97d8874STomasz Duszynski   mapping_priority = <mapping_priority>
224e97d8874STomasz Duszynski
225fe939687SNatalie Samsonov   rate_limit_enable = <rate_limit_enable>
226fe939687SNatalie Samsonov   rate_limit = <rate_limit>
227fe939687SNatalie Samsonov   burst_size = <burst_size>
228fe939687SNatalie Samsonov
229e97d8874STomasz Duszynski   default_policer = <policer_id>
230e97d8874STomasz Duszynski
231fe939687SNatalie Samsonov   [port <portnum> tc <traffic_class>]
232fe939687SNatalie Samsonov   rxq = <rx_queue_list>
233fe939687SNatalie Samsonov   pcp = <pcp_list>
234fe939687SNatalie Samsonov   dscp = <dscp_list>
235fe939687SNatalie Samsonov   default_color = <default_color>
236fe939687SNatalie Samsonov
237fe939687SNatalie Samsonov   [port <portnum> tc <traffic_class>]
238fe939687SNatalie Samsonov   rxq = <rx_queue_list>
239fe939687SNatalie Samsonov   pcp = <pcp_list>
240fe939687SNatalie Samsonov   dscp = <dscp_list>
241fe939687SNatalie Samsonov
242fe939687SNatalie Samsonov   [port <portnum> txq <txqnum>]
243fe939687SNatalie Samsonov   sched_mode = <sched_mode>
244fe939687SNatalie Samsonov   wrr_weight = <wrr_weight>
245fe939687SNatalie Samsonov
246fe939687SNatalie Samsonov   rate_limit_enable = <rate_limit_enable>
247fe939687SNatalie Samsonov   rate_limit = <rate_limit>
248fe939687SNatalie Samsonov   burst_size = <burst_size>
249fe939687SNatalie Samsonov
250fe939687SNatalie SamsonovWhere:
251fe939687SNatalie Samsonov
2523e09b2a7SLiron Himi- ``<udf_id>``: Logical UDF id.
2533e09b2a7SLiron Himi
2543e09b2a7SLiron Himi- ``<proto>``: Indicate the preceding hdr before the UDF header (`eth` or `udp`).
2553e09b2a7SLiron Himi
2563e09b2a7SLiron Himi- ``<field>``: Indicate the field of the <proto> hdr (`type` (eth) or `dport` (udp).
2573e09b2a7SLiron Himi
2583e09b2a7SLiron Himi- ``<key>``: UDF key in string format starting with '0x'.
2593e09b2a7SLiron Himi
2603e09b2a7SLiron Himi- ``<mask>``: UDF mask in string format starting with '0x'.
2613e09b2a7SLiron Himi
2623e09b2a7SLiron Himi- ``<offset>``: Starting UDF offset from the <proto> hdr.
2633e09b2a7SLiron Himi
264fe939687SNatalie Samsonov- ``<portnum>``: DPDK Port number (0..n).
265fe939687SNatalie Samsonov
26621aa25e0SDana Vardi- ``<start_hdr>``: Indicate what is the start header mode (`none` (eth), `dsa`, `ext_dsa` or `custom`).
267c2b5ae61SLiron Himi
268ef08031fSDana Vardi- ``<forward_bad_frames>``: Indicate whether to forward or drop l2 bad packets (0 or 1).
269ef08031fSDana Vardi
2704b86050aSDana Vardi- ``<fill_bpool_buffs>``: Control the amount of refill buffers (default is 64).
2714b86050aSDana Vardi
272fe939687SNatalie Samsonov- ``<default_tc>``: Default traffic class (e.g. 0)
273fe939687SNatalie Samsonov
274fe939687SNatalie Samsonov- ``<mapping_priority>``: QoS priority for mapping (`ip`, `vlan`, `ip/vlan` or `vlan/ip`).
275fe939687SNatalie Samsonov
276fe939687SNatalie Samsonov- ``<traffic_class>``: Traffic Class to be configured.
277fe939687SNatalie Samsonov
278fe939687SNatalie Samsonov- ``<rx_queue_list>``: List of DPDK RX queues (e.g. 0 1 3-4)
279fe939687SNatalie Samsonov
280fe939687SNatalie Samsonov- ``<pcp_list>``: List of PCP values to handle in particular TC (e.g. 0 1 3-4 7).
281fe939687SNatalie Samsonov
282fe939687SNatalie Samsonov- ``<dscp_list>``: List of DSCP values to handle in particular TC (e.g. 0-12 32-48 63).
283fe939687SNatalie Samsonov
284e97d8874STomasz Duszynski- ``<default_policer>``: Id of the policer configuration section to be used as default.
285e97d8874STomasz Duszynski
286e97d8874STomasz Duszynski- ``<policer_id>``: Id of the policer configuration section (0..31).
287fe939687SNatalie Samsonov
288fe939687SNatalie Samsonov- ``<token_unit>``: Policer token unit (`bytes` or `packets`).
289fe939687SNatalie Samsonov
290fe939687SNatalie Samsonov- ``<color_mode>``: Policer color mode (`aware` or `blind`).
291fe939687SNatalie Samsonov
292fe939687SNatalie Samsonov- ``<cir>``: Committed information rate in unit of kilo bits per second (data rate) or packets per second.
293fe939687SNatalie Samsonov
294fe939687SNatalie Samsonov- ``<cbs>``: Committed burst size in unit of kilo bytes or number of packets.
295fe939687SNatalie Samsonov
296fe939687SNatalie Samsonov- ``<ebs>``: Excess burst size in unit of kilo bytes or number of packets.
297fe939687SNatalie Samsonov
298fe939687SNatalie Samsonov- ``<default_color>``: Default color for specific tc.
299fe939687SNatalie Samsonov
300e97d8874STomasz Duszynski- ``<rate_limit_enable>``: Enables per port or per txq rate limiting (`0`/`1` to disable/enable).
301fe939687SNatalie Samsonov
302fe939687SNatalie Samsonov- ``<rate_limit>``: Committed information rate, in kilo bits per second.
303fe939687SNatalie Samsonov
304fe939687SNatalie Samsonov- ``<burst_size>``: Committed burst size, in kilo bytes.
305fe939687SNatalie Samsonov
306fe939687SNatalie Samsonov- ``<sched_mode>``: Egress scheduler mode (`wrr` or `sp`).
307fe939687SNatalie Samsonov
308fe939687SNatalie Samsonov- ``<wrr_weight>``: Txq weight.
309fe939687SNatalie Samsonov
310fe939687SNatalie SamsonovSetting PCP/DSCP values for the default TC is not required. All PCP/DSCP
311fe939687SNatalie Samsonovvalues not assigned explicitly to particular TC will be handled by the
312fe939687SNatalie Samsonovdefault TC.
313fe939687SNatalie Samsonov
314fe939687SNatalie SamsonovConfiguration file example
315fe939687SNatalie Samsonov^^^^^^^^^^^^^^^^^^^^^^^^^^
316fe939687SNatalie Samsonov
317fe939687SNatalie Samsonov.. code-block:: console
318fe939687SNatalie Samsonov
319e97d8874STomasz Duszynski   [policer 0]
320e97d8874STomasz Duszynski   token_unit = bytes
321e97d8874STomasz Duszynski   color = blind
322e97d8874STomasz Duszynski   cir = 100000
323e97d8874STomasz Duszynski   ebs = 64
324e97d8874STomasz Duszynski   cbs = 64
325e97d8874STomasz Duszynski
326fe939687SNatalie Samsonov   [port 0 default]
327fe939687SNatalie Samsonov   default_tc = 0
328fe939687SNatalie Samsonov   mapping_priority = ip
329fe939687SNatalie Samsonov
330fe939687SNatalie Samsonov   rate_limit_enable = 1
331fe939687SNatalie Samsonov   rate_limit = 1000
332fe939687SNatalie Samsonov   burst_size = 2000
333fe939687SNatalie Samsonov
334fe939687SNatalie Samsonov   [port 0 tc 0]
335fe939687SNatalie Samsonov   rxq = 0 1
336fe939687SNatalie Samsonov
337fe939687SNatalie Samsonov   [port 0 txq 0]
338fe939687SNatalie Samsonov   sched_mode = wrr
339fe939687SNatalie Samsonov   wrr_weight = 10
340fe939687SNatalie Samsonov
341fe939687SNatalie Samsonov   [port 0 txq 1]
342fe939687SNatalie Samsonov   sched_mode = wrr
343fe939687SNatalie Samsonov   wrr_weight = 100
344fe939687SNatalie Samsonov
345fe939687SNatalie Samsonov   [port 0 txq 2]
346fe939687SNatalie Samsonov   sched_mode = sp
347fe939687SNatalie Samsonov
348fe939687SNatalie Samsonov   [port 0 tc 1]
349fe939687SNatalie Samsonov   rxq = 2
350fe939687SNatalie Samsonov   pcp = 5 6 7
351fe939687SNatalie Samsonov   dscp = 26-38
352fe939687SNatalie Samsonov
353fe939687SNatalie Samsonov   [port 1 default]
354fe939687SNatalie Samsonov   default_tc = 0
355fe939687SNatalie Samsonov   mapping_priority = vlan/ip
356fe939687SNatalie Samsonov
357e97d8874STomasz Duszynski   default_policer = 0
358fe939687SNatalie Samsonov
359fe939687SNatalie Samsonov   [port 1 tc 0]
360fe939687SNatalie Samsonov   rxq = 0
361fe939687SNatalie Samsonov   dscp = 10
362fe939687SNatalie Samsonov
363fe939687SNatalie Samsonov   [port 1 tc 1]
364fe939687SNatalie Samsonov   rxq = 1
365fe939687SNatalie Samsonov   dscp = 11-20
366fe939687SNatalie Samsonov
367fe939687SNatalie Samsonov   [port 1 tc 2]
368fe939687SNatalie Samsonov   rxq = 2
369fe939687SNatalie Samsonov   dscp = 30
370fe939687SNatalie Samsonov
371fe939687SNatalie Samsonov   [port 1 txq 0]
372fe939687SNatalie Samsonov   rate_limit_enable = 1
373fe939687SNatalie Samsonov   rate_limit = 10000
374fe939687SNatalie Samsonov   burst_size = 2000
375fe939687SNatalie Samsonov
3763e09b2a7SLiron HimiConfiguration file example with UDF
3773e09b2a7SLiron Himi^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3783e09b2a7SLiron Himi
3793e09b2a7SLiron Himi.. code-block:: console
3803e09b2a7SLiron Himi
3813e09b2a7SLiron Himi   [parser udf 0]
3823e09b2a7SLiron Himi   proto = eth
3833e09b2a7SLiron Himi   field = type
3843e09b2a7SLiron Himi   key = 0x8842
3853e09b2a7SLiron Himi   mask = 0xffff
3863e09b2a7SLiron Himi   offset = 6
3873e09b2a7SLiron Himi
388fe939687SNatalie SamsonovUsage example
389fe939687SNatalie Samsonov^^^^^^^^^^^^^
390fe939687SNatalie Samsonov
391fe939687SNatalie Samsonov.. code-block:: console
392fe939687SNatalie Samsonov
39368d99d00SCiara Power   ./dpdk-testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2,cfg=/home/user/mrvl.conf \
394fe939687SNatalie Samsonov     -c 7 -- -i -a --disable-hw-vlan-strip --rxq=3 --txq=3
395fe939687SNatalie Samsonov
3960ba610caSNatalie Samsonov.. _flowapi:
397fe939687SNatalie Samsonov
398fe939687SNatalie SamsonovFlow API
399fe939687SNatalie Samsonov--------
400fe939687SNatalie Samsonov
401fe939687SNatalie SamsonovPPv2 offers packet classification capabilities via classifier engine which
402fe939687SNatalie Samsonovcan be configured via generic flow API offered by DPDK.
4030e0fb943SThomas Monjalon
4040e0fb943SThomas MonjalonThe :ref:`flow_isolated_mode` is supported.
4050e0fb943SThomas Monjalon
406*41dd9a6bSDavid YoungFor an additional description please refer to DPDK :doc:`../prog_guide/ethdev/flow_offload`.
407fe939687SNatalie Samsonov
408fe939687SNatalie SamsonovSupported flow actions
409fe939687SNatalie Samsonov~~~~~~~~~~~~~~~~~~~~~~
410fe939687SNatalie Samsonov
411fe939687SNatalie SamsonovFollowing flow action items are supported by the driver:
412fe939687SNatalie Samsonov
413fe939687SNatalie Samsonov* DROP
414fe939687SNatalie Samsonov* QUEUE
415e0ae4cf6SLiron Himi* METER
416fe939687SNatalie Samsonov
417fe939687SNatalie SamsonovSupported flow items
418fe939687SNatalie Samsonov~~~~~~~~~~~~~~~~~~~~
419fe939687SNatalie Samsonov
420fe939687SNatalie SamsonovFollowing flow items and their respective fields are supported by the driver:
421fe939687SNatalie Samsonov
422fe939687SNatalie Samsonov* ETH
423fe939687SNatalie Samsonov
424fe939687SNatalie Samsonov  * source MAC
425fe939687SNatalie Samsonov  * destination MAC
426fe939687SNatalie Samsonov  * ethertype
427fe939687SNatalie Samsonov
428fe939687SNatalie Samsonov* VLAN
429fe939687SNatalie Samsonov
430fe939687SNatalie Samsonov  * PCP
431fe939687SNatalie Samsonov  * VID
432fe939687SNatalie Samsonov
433fe939687SNatalie Samsonov* IPV4
434fe939687SNatalie Samsonov
435fe939687SNatalie Samsonov  * DSCP
436fe939687SNatalie Samsonov  * protocol
437fe939687SNatalie Samsonov  * source address
438fe939687SNatalie Samsonov  * destination address
439fe939687SNatalie Samsonov
440fe939687SNatalie Samsonov* IPV6
441fe939687SNatalie Samsonov
442fe939687SNatalie Samsonov  * flow label
443fe939687SNatalie Samsonov  * next header
444fe939687SNatalie Samsonov  * source address
445fe939687SNatalie Samsonov  * destination address
446fe939687SNatalie Samsonov
447fe939687SNatalie Samsonov* UDP
448fe939687SNatalie Samsonov
449fe939687SNatalie Samsonov  * source port
450fe939687SNatalie Samsonov  * destination port
451fe939687SNatalie Samsonov
452fe939687SNatalie Samsonov* TCP
453fe939687SNatalie Samsonov
454fe939687SNatalie Samsonov  * source port
455fe939687SNatalie Samsonov  * destination port
456fe939687SNatalie Samsonov
457fe939687SNatalie SamsonovClassifier match engine
458fe939687SNatalie Samsonov~~~~~~~~~~~~~~~~~~~~~~~
459fe939687SNatalie Samsonov
460fe939687SNatalie SamsonovClassifier has an internal match engine which can be configured to
461fe939687SNatalie Samsonovoperate in either exact or maskable mode.
462fe939687SNatalie Samsonov
463fe939687SNatalie SamsonovMode is selected upon creation of the first unique flow rule as follows:
464fe939687SNatalie Samsonov
465fe939687SNatalie Samsonov* maskable, if key size is up to 8 bytes.
466fe939687SNatalie Samsonov* exact, otherwise, i.e for keys bigger than 8 bytes.
467fe939687SNatalie Samsonov
468fe939687SNatalie SamsonovWhere the key size equals the number of bytes of all fields specified
469fe939687SNatalie Samsonovin the flow items.
470fe939687SNatalie Samsonov
471fe939687SNatalie Samsonov.. table:: Examples of key size calculation
472fe939687SNatalie Samsonov
473fe939687SNatalie Samsonov   +----------------------------------------------------------------------------+-------------------+-------------+
474fe939687SNatalie Samsonov   | Flow pattern                                                               | Key size in bytes | Used engine |
475fe939687SNatalie Samsonov   +============================================================================+===================+=============+
476fe939687SNatalie Samsonov   | ETH (destination MAC) / VLAN (VID)                                         | 6 + 2 = 8         | Maskable    |
477fe939687SNatalie Samsonov   +----------------------------------------------------------------------------+-------------------+-------------+
478fe939687SNatalie Samsonov   | VLAN (VID) / IPV4 (source address)                                         | 2 + 4 = 6         | Maskable    |
479fe939687SNatalie Samsonov   +----------------------------------------------------------------------------+-------------------+-------------+
480fe939687SNatalie Samsonov   | TCP (source port, destination port)                                        | 2 + 2 = 4         | Maskable    |
481fe939687SNatalie Samsonov   +----------------------------------------------------------------------------+-------------------+-------------+
482fe939687SNatalie Samsonov   | VLAN (priority) / IPV4 (source address)                                    | 1 + 4 = 5         | Maskable    |
483fe939687SNatalie Samsonov   +----------------------------------------------------------------------------+-------------------+-------------+
484fe939687SNatalie Samsonov   | IPV4 (destination address) / UDP (source port, destination port)           | 6 + 2 + 2 = 10    | Exact       |
485fe939687SNatalie Samsonov   +----------------------------------------------------------------------------+-------------------+-------------+
486fe939687SNatalie Samsonov   | VLAN (VID) / IPV6 (flow label, destination address)                        | 2 + 3 + 16 = 21   | Exact       |
487fe939687SNatalie Samsonov   +----------------------------------------------------------------------------+-------------------+-------------+
488fe939687SNatalie Samsonov   | IPV4 (DSCP, source address, destination address)                           | 1 + 4 + 4 = 9     | Exact       |
489fe939687SNatalie Samsonov   +----------------------------------------------------------------------------+-------------------+-------------+
490fe939687SNatalie Samsonov   | IPV6 (flow label, source address, destination address)                     | 3 + 16 + 16 = 35  | Exact       |
491fe939687SNatalie Samsonov   +----------------------------------------------------------------------------+-------------------+-------------+
492fe939687SNatalie Samsonov
493fe939687SNatalie SamsonovFrom the user perspective maskable mode means that masks specified
494fe939687SNatalie Samsonovvia flow rules are respected. In case of exact match mode, masks
495fe939687SNatalie Samsonovwhich do not provide exact matching (all bits masked) are ignored.
496fe939687SNatalie Samsonov
497fe939687SNatalie SamsonovIf the flow matches more than one classifier rule the first
498fe939687SNatalie Samsonov(with the lowest index) matched takes precedence.
499fe939687SNatalie Samsonov
500fe939687SNatalie SamsonovFlow rules usage example
501fe939687SNatalie Samsonov~~~~~~~~~~~~~~~~~~~~~~~~
502fe939687SNatalie Samsonov
503fe939687SNatalie SamsonovBefore proceeding run testpmd user application:
504fe939687SNatalie Samsonov
505fe939687SNatalie Samsonov.. code-block:: console
506fe939687SNatalie Samsonov
50768d99d00SCiara Power   ./dpdk-testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 3 -- -i --p 3 -a --disable-hw-vlan-strip
508fe939687SNatalie Samsonov
509fe939687SNatalie SamsonovExample #1
510fe939687SNatalie Samsonov^^^^^^^^^^
511fe939687SNatalie Samsonov
512fe939687SNatalie Samsonov.. code-block:: console
513fe939687SNatalie Samsonov
514fe939687SNatalie Samsonov   testpmd> flow create 0 ingress pattern eth src is 10:11:12:13:14:15 / end actions drop / end
515fe939687SNatalie Samsonov
516fe939687SNatalie SamsonovIn this case key size is 6 bytes thus maskable type is selected. Testpmd
517fe939687SNatalie Samsonovwill set mask to ff:ff:ff:ff:ff:ff i.e traffic explicitly matching
518fe939687SNatalie Samsonovabove rule will be dropped.
519fe939687SNatalie Samsonov
520fe939687SNatalie SamsonovExample #2
521fe939687SNatalie Samsonov^^^^^^^^^^
522fe939687SNatalie Samsonov
523fe939687SNatalie Samsonov.. code-block:: console
524fe939687SNatalie Samsonov
525fe939687SNatalie Samsonov   testpmd> flow create 0 ingress pattern ipv4 src spec 10.10.10.0 src mask 255.255.255.0 / tcp src spec 0x10 src mask 0x10 / end action drop / end
526fe939687SNatalie Samsonov
527fe939687SNatalie SamsonovIn this case key size is 8 bytes thus maskable type is selected.
528fe939687SNatalie SamsonovFlows which have IPv4 source addresses ranging from 10.10.10.0 to 10.10.10.255
529fe939687SNatalie Samsonovand tcp source port set to 16 will be dropped.
530fe939687SNatalie Samsonov
531fe939687SNatalie SamsonovExample #3
532fe939687SNatalie Samsonov^^^^^^^^^^
533fe939687SNatalie Samsonov
534fe939687SNatalie Samsonov.. code-block:: console
535fe939687SNatalie Samsonov
536fe939687SNatalie Samsonov   testpmd> flow create 0 ingress pattern vlan vid spec 0x10 vid mask 0x10 / ipv4 src spec 10.10.1.1 src mask 255.255.0.0 dst spec 11.11.11.1 dst mask 255.255.255.0 / end actions drop / end
537fe939687SNatalie Samsonov
538fe939687SNatalie SamsonovIn this case key size is 10 bytes thus exact type is selected.
539fe939687SNatalie SamsonovEven though each item has partial mask set, masks will be ignored.
540fe939687SNatalie SamsonovAs a result only flows with VID set to 16 and IPv4 source and destination
541fe939687SNatalie Samsonovaddresses set to 10.10.1.1 and 11.11.11.1 respectively will be dropped.
542fe939687SNatalie Samsonov
543fe939687SNatalie SamsonovLimitations
544fe939687SNatalie Samsonov~~~~~~~~~~~
545fe939687SNatalie Samsonov
546fe939687SNatalie SamsonovFollowing limitations need to be taken into account while creating flow rules:
547fe939687SNatalie Samsonov
548fe939687SNatalie Samsonov* For IPv4 exact match type the key size must be up to 12 bytes.
549fe939687SNatalie Samsonov* For IPv6 exact match type the key size must be up to 36 bytes.
550fe939687SNatalie Samsonov* Following fields cannot be partially masked (all masks are treated as
551fe939687SNatalie Samsonov  if they were exact):
552fe939687SNatalie Samsonov
553fe939687SNatalie Samsonov  * ETH: ethertype
554fe939687SNatalie Samsonov  * VLAN: PCP, VID
555fe939687SNatalie Samsonov  * IPv4: protocol
556fe939687SNatalie Samsonov  * IPv6: next header
557fe939687SNatalie Samsonov  * TCP/UDP: source port, destination port
558fe939687SNatalie Samsonov
559fe939687SNatalie Samsonov* Only one classifier table can be created thus all rules in the table
560fe939687SNatalie Samsonov  have to match table format. Table format is set during creation of
561fe939687SNatalie Samsonov  the first unique flow rule.
562fe939687SNatalie Samsonov* Up to 5 fields can be specified per flow rule.
563fe939687SNatalie Samsonov* Up to 20 flow rules can be added.
564fe939687SNatalie Samsonov
565fe939687SNatalie SamsonovFor additional information about classifier please consult
566fe939687SNatalie Samsonov``doc/musdk_cls_user_guide.txt``.
567fe939687SNatalie Samsonov
5680ba610caSNatalie Samsonov.. _mtrapi:
569fe939687SNatalie Samsonov
5700ba610caSNatalie SamsonovTraffic metering and policing
5710ba610caSNatalie Samsonov-----------------------------
5720ba610caSNatalie Samsonov
5730ba610caSNatalie SamsonovMVPP2 PMD supports DPDK traffic metering and policing that allows the following:
5740ba610caSNatalie Samsonov
575443b949eSDavid Marchand#. Meter ingress traffic.
576443b949eSDavid Marchand
577443b949eSDavid Marchand#. Do policing.
578443b949eSDavid Marchand
579443b949eSDavid Marchand#. Gather statistics.
5800ba610caSNatalie Samsonov
581*41dd9a6bSDavid YoungFor an additional description please refer to DPDK :doc:`../prog_guide/ethdev/traffic_metering_and_policing`.
5820ba610caSNatalie Samsonov
583c2b5ae61SLiron HimiThe policer objects defined by this feature can work with the default policer defined via config file as described in :ref:`QoS Support <extconf>`.
5840ba610caSNatalie Samsonov
5850ba610caSNatalie SamsonovLimitations
5860ba610caSNatalie Samsonov~~~~~~~~~~~
5870ba610caSNatalie Samsonov
5880ba610caSNatalie SamsonovThe following capabilities are not supported:
5890ba610caSNatalie Samsonov
5900ba610caSNatalie Samsonov- MTR object meter DSCP table update
5910ba610caSNatalie Samsonov- MTR object policer action update
5920ba610caSNatalie Samsonov- MTR object enabled statistics
5930ba610caSNatalie Samsonov
5940ba610caSNatalie SamsonovUsage example
5950ba610caSNatalie Samsonov~~~~~~~~~~~~~
5960ba610caSNatalie Samsonov
597443b949eSDavid Marchand#. Run testpmd user app:
598fe939687SNatalie Samsonov
599fe939687SNatalie Samsonov   .. code-block:: console
600fe939687SNatalie Samsonov
60168d99d00SCiara Power		./dpdk-testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 6 -- -i -p 3 -a --txd 1024 --rxd 1024
602fe939687SNatalie Samsonov
603443b949eSDavid Marchand#. Create meter profile:
604fe939687SNatalie Samsonov
605fe939687SNatalie Samsonov   .. code-block:: console
606fe939687SNatalie Samsonov
6070ba610caSNatalie Samsonov		testpmd> add port meter profile 0 0 srtcm_rfc2697 2000 256 256
608fe939687SNatalie Samsonov
609443b949eSDavid Marchand#. Create meter:
610fe939687SNatalie Samsonov
611fe939687SNatalie Samsonov   .. code-block:: console
612fe939687SNatalie Samsonov
6130ba610caSNatalie Samsonov		testpmd> create port meter 0 0 0 yes d d d 0 1 0
6140ba610caSNatalie Samsonov
615443b949eSDavid Marchand#. Create flow rule witch meter attached:
6160ba610caSNatalie Samsonov
6170ba610caSNatalie Samsonov   .. code-block:: console
6180ba610caSNatalie Samsonov
6190ba610caSNatalie Samsonov		testpmd> flow create 0 ingress pattern ipv4 src is 10.10.10.1 / end actions meter mtr_id 0 / end
6200ba610caSNatalie Samsonov
6210ba610caSNatalie SamsonovFor a detailed usage description please refer to "Traffic Metering and Policing" section in DPDK :doc:`Testpmd Runtime Functions <../testpmd_app_ug/testpmd_funcs>`.
6220ba610caSNatalie Samsonov
6230ba610caSNatalie Samsonov
6240ba610caSNatalie Samsonov
6250ba610caSNatalie Samsonov.. _tmapi:
6260ba610caSNatalie Samsonov
6270ba610caSNatalie SamsonovTraffic Management API
6280ba610caSNatalie Samsonov----------------------
6290ba610caSNatalie Samsonov
6300ba610caSNatalie SamsonovMVPP2 PMD supports generic DPDK Traffic Management API which allows to
6310ba610caSNatalie Samsonovconfigure the following features:
6320ba610caSNatalie Samsonov
633443b949eSDavid Marchand#. Hierarchical scheduling
634443b949eSDavid Marchand
635443b949eSDavid Marchand#. Traffic shaping
636443b949eSDavid Marchand
637443b949eSDavid Marchand#. Congestion management
638443b949eSDavid Marchand
639443b949eSDavid Marchand#. Packet marking
6400ba610caSNatalie Samsonov
6410ba610caSNatalie SamsonovInternally TM is represented by a hierarchy (tree) of nodes.
6420ba610caSNatalie SamsonovNode which has a parent is called a leaf whereas node without
6430ba610caSNatalie Samsonovparent is called a non-leaf (root).
6440ba610caSNatalie SamsonovMVPP2 PMD supports two level hierarchy where level 0 represents ports and level 1 represents tx queues of a given port.
6450ba610caSNatalie Samsonov
64698372f54SDan Gora.. figure:: img/mvpp2_tm.*
6470ba610caSNatalie Samsonov
6480ba610caSNatalie SamsonovNodes hold following types of settings:
6490ba610caSNatalie Samsonov
6500ba610caSNatalie Samsonov- for egress scheduler configuration: weight
6510ba610caSNatalie Samsonov- for egress rate limiter: private shaper
6520ba610caSNatalie Samsonov- bitmask indicating which statistics counters will be read
6530ba610caSNatalie Samsonov
6540ba610caSNatalie SamsonovHierarchy is always constructed from the top, i.e first a root node is added
6550ba610caSNatalie Samsonovthen some number of leaf nodes. Number of leaf nodes cannot exceed number
6560ba610caSNatalie Samsonovof configured tx queues.
6570ba610caSNatalie Samsonov
6580ba610caSNatalie SamsonovAfter hierarchy is complete it can be committed.
6590ba610caSNatalie Samsonov
6600ba610caSNatalie Samsonov
661*41dd9a6bSDavid YoungFor an additional description please refer to DPDK :doc:`../prog_guide/ethdev/traffic_management`.
6620ba610caSNatalie Samsonov
6630ba610caSNatalie SamsonovLimitations
6640ba610caSNatalie Samsonov~~~~~~~~~~~
6650ba610caSNatalie Samsonov
6660ba610caSNatalie SamsonovThe following capabilities are not supported:
6670ba610caSNatalie Samsonov
6680ba610caSNatalie Samsonov- Traffic manager WRED profile and WRED context
6690ba610caSNatalie Samsonov- Traffic manager shared shaper update
6700ba610caSNatalie Samsonov- Traffic manager packet marking
6710ba610caSNatalie Samsonov- Maximum number of levels in hierarchy is 2
6720ba610caSNatalie Samsonov- Currently dynamic change of a hierarchy is not supported
6730ba610caSNatalie Samsonov
6740ba610caSNatalie SamsonovUsage example
6750ba610caSNatalie Samsonov~~~~~~~~~~~~~
6760ba610caSNatalie Samsonov
677*41dd9a6bSDavid YoungFor a detailed usage description please refer to "Traffic Management" section in DPDK :doc:`../testpmd_app_ug/testpmd_funcs`.
6780ba610caSNatalie Samsonov
679443b949eSDavid Marchand#. Run testpmd as follows:
6800ba610caSNatalie Samsonov
6810ba610caSNatalie Samsonov   .. code-block:: console
6820ba610caSNatalie Samsonov
68368d99d00SCiara Power		./dpdk-testpmd --vdev=net_mrvl,iface=eth0,iface=eth2,cfg=./qos_config -c 7 -- \
6840ba610caSNatalie Samsonov		-i -p 3 --disable-hw-vlan-strip --rxq 3 --txq 3 --txd 1024 --rxd 1024
6850ba610caSNatalie Samsonov
686443b949eSDavid Marchand#. Stop all ports:
6870ba610caSNatalie Samsonov
6880ba610caSNatalie Samsonov   .. code-block:: console
6890ba610caSNatalie Samsonov
6900ba610caSNatalie Samsonov		testpmd> port stop all
6910ba610caSNatalie Samsonov
692443b949eSDavid Marchand#. Add shaper profile:
6930ba610caSNatalie Samsonov
6940ba610caSNatalie Samsonov   .. code-block:: console
6950ba610caSNatalie Samsonov
6960ba610caSNatalie Samsonov		testpmd> add port tm node shaper profile 0 0 900000 70000 0
6970ba610caSNatalie Samsonov
6980ba610caSNatalie Samsonov   Parameters have following meaning::
6990ba610caSNatalie Samsonov
7000ba610caSNatalie Samsonov		0       - Id of a port.
7010ba610caSNatalie Samsonov		0       - Id of a new shaper profile.
7020ba610caSNatalie Samsonov		900000  - Shaper rate in bytes/s.
7030ba610caSNatalie Samsonov		70000   - Bucket size in bytes.
7040ba610caSNatalie Samsonov		0       - Packet length adjustment - ignored.
7050ba610caSNatalie Samsonov
706443b949eSDavid Marchand#. Add non-leaf node for port 0:
7070ba610caSNatalie Samsonov
7080ba610caSNatalie Samsonov   .. code-block:: console
7090ba610caSNatalie Samsonov
7100ba610caSNatalie Samsonov		testpmd> add port tm nonleaf node 0 3 -1 0 0 0 0 0 1 3 0
7110ba610caSNatalie Samsonov
7120ba610caSNatalie Samsonov   Parameters have following meaning::
7130ba610caSNatalie Samsonov
7140ba610caSNatalie Samsonov		 0  - Id of a port
7150ba610caSNatalie Samsonov		 3  - Id of a new node.
7160ba610caSNatalie Samsonov		-1  - Indicate that root does not have a parent.
7170ba610caSNatalie Samsonov		 0  - Priority of the node.
7180ba610caSNatalie Samsonov		 0  - Weight of the node.
7190ba610caSNatalie Samsonov		 0  - Id of a level. Since this is a root 0 is passed.
7200ba610caSNatalie Samsonov		 0  - Id of the shaper profile.
7210ba610caSNatalie Samsonov		 0  - Number of SP priorities.
7220ba610caSNatalie Samsonov		 3  - Enable statistics for both number of transmitted packets and bytes.
7230ba610caSNatalie Samsonov		 0  - Number of shared shapers.
7240ba610caSNatalie Samsonov
725443b949eSDavid Marchand#. Add leaf node for tx queue 0:
7260ba610caSNatalie Samsonov
7270ba610caSNatalie Samsonov   .. code-block:: console
7280ba610caSNatalie Samsonov
7290ba610caSNatalie Samsonov		testpmd> add port tm leaf node 0 0 3 0 30 1 -1 0 0 1 0
7300ba610caSNatalie Samsonov
7310ba610caSNatalie Samsonov   Parameters have following meaning::
7320ba610caSNatalie Samsonov
7330ba610caSNatalie Samsonov		 0  - Id of a port.
7340ba610caSNatalie Samsonov		 0  - Id of a new node.
7350ba610caSNatalie Samsonov		 3  - Id of the parent node.
7360ba610caSNatalie Samsonov		 0  - Priority of a node.
7370ba610caSNatalie Samsonov		 30 - WRR weight.
7380ba610caSNatalie Samsonov		 1  - Id of a level. Since this is a leaf node 1 is passed.
7390ba610caSNatalie Samsonov		-1  - Id of a shaper. -1 indicates that shaper is not attached.
7400ba610caSNatalie Samsonov		 0  - Congestion management is not supported.
7410ba610caSNatalie Samsonov		 0  - Congestion management is not supported.
7420ba610caSNatalie Samsonov		 1  - Enable statistics counter for number of transmitted packets.
7430ba610caSNatalie Samsonov		 0  - Number of shared shapers.
7440ba610caSNatalie Samsonov
745443b949eSDavid Marchand#. Add leaf node for tx queue 1:
7460ba610caSNatalie Samsonov
7470ba610caSNatalie Samsonov   .. code-block:: console
7480ba610caSNatalie Samsonov
7490ba610caSNatalie Samsonov	testpmd> add port tm leaf node 0 1 3 0 60 1 -1 0 0 1 0
7500ba610caSNatalie Samsonov
7510ba610caSNatalie Samsonov   Parameters have following meaning::
7520ba610caSNatalie Samsonov
7530ba610caSNatalie Samsonov		 0  - Id of a port.
7540ba610caSNatalie Samsonov		 1  - Id of a new node.
7550ba610caSNatalie Samsonov		 3  - Id of the parent node.
7560ba610caSNatalie Samsonov		 0  - Priority of a node.
7570ba610caSNatalie Samsonov		 60 - WRR weight.
7580ba610caSNatalie Samsonov		 1  - Id of a level. Since this is a leaf node 1 is passed.
7590ba610caSNatalie Samsonov		-1  - Id of a shaper. -1 indicates that shaper is not attached.
7600ba610caSNatalie Samsonov		 0  - Congestion management is not supported.
7610ba610caSNatalie Samsonov		 0  - Congestion management is not supported.
7620ba610caSNatalie Samsonov		 1  - Enable statistics counter for number of transmitted packets.
7630ba610caSNatalie Samsonov		 0  - Number of shared shapers.
7640ba610caSNatalie Samsonov
765443b949eSDavid Marchand#. Add leaf node for tx queue 2:
7660ba610caSNatalie Samsonov
7670ba610caSNatalie Samsonov   .. code-block:: console
7680ba610caSNatalie Samsonov
7690ba610caSNatalie Samsonov		testpmd> add port tm leaf node 0 2 3 0 99 1 -1 0 0 1 0
7700ba610caSNatalie Samsonov
7710ba610caSNatalie Samsonov   Parameters have following meaning::
7720ba610caSNatalie Samsonov
7730ba610caSNatalie Samsonov		 0  - Id of a port.
7740ba610caSNatalie Samsonov		 2  - Id of a new node.
7750ba610caSNatalie Samsonov		 3  - Id of the parent node.
7760ba610caSNatalie Samsonov		 0  - Priority of a node.
7770ba610caSNatalie Samsonov		 99 - WRR weight.
7780ba610caSNatalie Samsonov		 1  - Id of a level. Since this is a leaf node 1 is passed.
7790ba610caSNatalie Samsonov		-1  - Id of a shaper. -1 indicates that shaper is not attached.
7800ba610caSNatalie Samsonov		 0  - Congestion management is not supported.
7810ba610caSNatalie Samsonov		 0  - Congestion management is not supported.
7820ba610caSNatalie Samsonov		 1  - Enable statistics counter for number of transmitted packets.
7830ba610caSNatalie Samsonov		 0  - Number of shared shapers.
7840ba610caSNatalie Samsonov
785443b949eSDavid Marchand#. Commit hierarchy:
7860ba610caSNatalie Samsonov
7870ba610caSNatalie Samsonov   .. code-block:: console
7880ba610caSNatalie Samsonov
7890ba610caSNatalie Samsonov		testpmd> port tm hierarchy commit 0 no
7900ba610caSNatalie Samsonov
7910ba610caSNatalie Samsonov   Parameters have following meaning::
7920ba610caSNatalie Samsonov
7930ba610caSNatalie Samsonov		0  - Id of a port.
7940ba610caSNatalie Samsonov		no - Do not flush TM hierarchy if commit fails.
7950ba610caSNatalie Samsonov
796443b949eSDavid Marchand#. Start all ports
7970ba610caSNatalie Samsonov
7980ba610caSNatalie Samsonov   .. code-block:: console
7990ba610caSNatalie Samsonov
8000ba610caSNatalie Samsonov		testpmd> port start all
8010ba610caSNatalie Samsonov
8020ba610caSNatalie Samsonov
8030ba610caSNatalie Samsonov
804443b949eSDavid Marchand#. Enable forwarding
8050ba610caSNatalie Samsonov
8060ba610caSNatalie Samsonov   .. code-block:: console
8070ba610caSNatalie Samsonov
8080ba610caSNatalie Samsonov		testpmd> start
809