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