get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/44250/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 44250,
    "url": "http://patches.dpdk.org/api/patches/44250/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1536068953-9352-12-git-send-email-tdu@semihalf.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1536068953-9352-12-git-send-email-tdu@semihalf.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1536068953-9352-12-git-send-email-tdu@semihalf.com",
    "date": "2018-09-04T13:49:12",
    "name": "[v2,11/12] net/mvpp2: document MTR and TM usage",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "f54bd4a6bc50cd47553585bfdee0bc2b2e00dd3d",
    "submitter": {
        "id": 846,
        "url": "http://patches.dpdk.org/api/people/846/?format=api",
        "name": "Tomasz Duszynski",
        "email": "tdu@semihalf.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1536068953-9352-12-git-send-email-tdu@semihalf.com/mbox/",
    "series": [
        {
            "id": 1171,
            "url": "http://patches.dpdk.org/api/series/1171/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1171",
            "date": "2018-09-04T13:49:02",
            "name": "net/mvpp2: add new features",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/1171/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/44250/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/44250/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 7C17A5F0D;\n\tTue,  4 Sep 2018 15:49:42 +0200 (CEST)",
            "from mail-lj1-f177.google.com (mail-lj1-f177.google.com\n\t[209.85.208.177]) by dpdk.org (Postfix) with ESMTP id F24CB58CB\n\tfor <dev@dpdk.org>; Tue,  4 Sep 2018 15:49:35 +0200 (CEST)",
            "by mail-lj1-f177.google.com with SMTP id l15-v6so3211189lji.6\n\tfor <dev@dpdk.org>; Tue, 04 Sep 2018 06:49:35 -0700 (PDT)",
            "from sh.semihalf.local (31-172-191-173.noc.fibertech.net.pl.\n\t[31.172.191.173]) by smtp.gmail.com with ESMTPSA id\n\tq22-v6sm4057225lff.10.2018.09.04.06.49.33\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tTue, 04 Sep 2018 06:49:34 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=semihalf-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=gXu7oWUNC8RzkdIcHwLyaka0ZDKRmxy258w/vT6PZRU=;\n\tb=fM76xGmZveJUxdw5FoE4MXuqAcDf6LqzyB7pE8UB6SsYb0Fuyla/HpZvz9d1VyFHxS\n\tt28S7RKHBr1xORw6UcmixnJt0frIEKtB5CEG2k68TWlYaUqcF6og9OTR/jcM0+00LRkn\n\tNIYcnYslV/DbZuUTmOdIlVRXFB8Yits3rLFjfUXnzTY+Nj2wTcv1mX6ksX6JQ0zUEIRC\n\ttWiOFyZ82ZEkOKRrRJOiMFEQ/xSKOOX6X8bSKaWhSD75wRJCDsVGySP0Qqkuk74V21m1\n\tv+crEHl2mQDEKaBQwC4rtX9uXWklIEsdkQCX5Hrz8kDKh4cx0xkbpjx41I8+mcIJeIxP\n\tJONQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=gXu7oWUNC8RzkdIcHwLyaka0ZDKRmxy258w/vT6PZRU=;\n\tb=QYZgEA6RsRf7ugsqSwh209epfX0rkqDhE6x3Ru2phUAxvVK6PY0akz+jHOGY5vzd2x\n\tFXBOwga19bEcjGrruQzaf2Mym1ebZ68WbCtj7Y8z0ZTVdq/zCXl26BLSSXPWOw4xS4C3\n\thwvb6KHlvwM821l1FZ5/mSLK34ThIecIWPFlrXPukcF879xY9NvKWnFXCYXCfcasvlI8\n\tYHY5ckiHt3TWjPuke5mcmip8vLoTKIzFl5EtDMSVJDd8T9z7bE7gKdZdMldUIiF66jmF\n\tf7zIMGGHs1E/zkbqAHrJTNcoPEFuo5rGOWoGJw0DSOevtP0BVBm+c7UNKWPgkKqxOn0R\n\ttY8g==",
        "X-Gm-Message-State": "APzg51Dnk95kq2HaaQ08i1c+MzOTEKMXfZ8k8ClklDuKSKY0KzOsarzA\n\tGx3Ciupfd0HIpT999pf9II0W/cRr4PND/A==",
        "X-Google-Smtp-Source": "ANB0VdZsYjRh10nMPbqg5Qzx6a0sRdx2gKZkfssipqz3nmzNgX0PKgXbsxpz5W/hTVZ+OhSSC39smA==",
        "X-Received": "by 2002:a2e:9599:: with SMTP id\n\tw25-v6mr10866637ljh.6.1536068974906; \n\tTue, 04 Sep 2018 06:49:34 -0700 (PDT)",
        "From": "Tomasz Duszynski <tdu@semihalf.com>",
        "To": "dev@dpdk.org",
        "Cc": "nsamsono@marvell.com,\n\tmw@semihalf.com",
        "Date": "Tue,  4 Sep 2018 15:49:12 +0200",
        "Message-Id": "<1536068953-9352-12-git-send-email-tdu@semihalf.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1536068953-9352-1-git-send-email-tdu@semihalf.com>",
        "References": "<1536045016-32008-1-git-send-email-tdu@semihalf.com>\n\t<1536068953-9352-1-git-send-email-tdu@semihalf.com>",
        "Subject": "[dpdk-dev] [PATCH v2 11/12] net/mvpp2: document MTR and TM usage",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Natalie Samsonov <nsamsono@marvell.com>\n\nDocument MTR (metering) and TM (traffic management) usage plus\ndo some small updates here and there.\n\nSigned-off-by: Natalie Samsonov <nsamsono@marvell.com>\n---\n doc/guides/nics/img/mvpp2_tm.png | Bin 0 -> 5355 bytes\n doc/guides/nics/mvpp2.rst        | 386 +++++++++++++++++++++++++++++++++------\n 2 files changed, 335 insertions(+), 51 deletions(-)\n create mode 100644 doc/guides/nics/img/mvpp2_tm.png",
    "diff": "diff --git a/doc/guides/nics/img/mvpp2_tm.png b/doc/guides/nics/img/mvpp2_tm.png\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..3c709bab43950c39578a6726ab570008bc722e2f\nGIT binary patch\nliteral 5355\n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\n\nliteral 0\nHcmV?d00001\n\ndiff --git a/doc/guides/nics/mvpp2.rst b/doc/guides/nics/mvpp2.rst\nindex 3b3f8c6..e7f45c3 100644\n--- a/doc/guides/nics/mvpp2.rst\n+++ b/doc/guides/nics/mvpp2.rst\n@@ -56,7 +56,7 @@ Features of the MVPP2 PMD are:\n \n - Speed capabilities\n - Link status\n-- Queue start/stop\n+- Tx Queue start/stop\n - MTU update\n - Jumbo frame\n - Promiscuous mode\n@@ -70,12 +70,13 @@ Features of the MVPP2 PMD are:\n - L4 checksum offload\n - Packet type parsing\n - Basic stats\n-- Extended stats\n-- QoS\n+- :ref:`Extended stats <extstats>`\n - RX flow control\n-- TX queue start/stop\n - Scattered TX frames\n-\n+- :ref:`QoS <qossupport>`\n+- :ref:`Flow API <flowapi>`\n+- :ref:`Traffic metering and policing <mtrapi>`\n+- :ref:`Traffic Management API <tmapi>`\n \n Limitations\n -----------\n@@ -89,6 +90,20 @@ Limitations\n   functionality. Current workaround is to reset board so that PPv2 has a\n   chance to start in a sane state.\n \n+- MUSDK architecture does not support changing configuration in run time.\n+  All nessesary configurations should be done before first dev_start().\n+\n+- RX queue start/stop is not supported.\n+\n+- Current implementation does not support replacement of buffers in the HW buffer pool\n+  at run time, so it is responsibility of the application to ensure that MTU does not exceed the configured buffer size.\n+\n+- Configuring TX flow control currently is not supported.\n+\n+- In current implementation, mechanism for acknowledging transmitted packets (``tx_done_cleanup``) is not supported.\n+\n+- Running more than one DPDK-MUSDK application simultaneously is not supported.\n+\n \n Prerequisites\n -------------\n@@ -139,6 +154,92 @@ The following options can be modified in the ``config`` file.\n \n        When MVPP2 PMD is enabled ``CONFIG_RTE_LIBRTE_MVNETA_PMD`` must be disabled\n \n+\n+Building DPDK\n+-------------\n+\n+Driver needs precompiled MUSDK library during compilation.\n+\n+.. code-block:: console\n+\n+   export CROSS_COMPILE=<toolchain>/bin/aarch64-linux-gnu-\n+   ./bootstrap\n+   ./configure --host=aarch64-linux-gnu\n+   make install\n+\n+MUSDK will be installed to `usr/local` under current directory.\n+For the detailed build instructions please consult ``doc/musdk_get_started.txt``.\n+\n+Before the DPDK build process the environmental variable ``LIBMUSDK_PATH`` with\n+the path to the MUSDK installation directory needs to be exported.\n+\n+For additional instructions regarding DPDK cross compilation please refer to :doc:`Cross compile DPDK for ARM64 <../linux_gsg/cross_build_dpdk_for_arm64>`.\n+\n+.. code-block:: console\n+\n+   export LIBMUSDK_PATH=<musdk>/usr/local\n+   export CROSS=<toolchain>/bin/aarch64-linux-gnu-\n+   export RTE_KERNELDIR=<kernel-dir>\n+   export RTE_TARGET=arm64-armv8a-linuxapp-gcc\n+\n+   make config T=arm64-armv8a-linuxapp-gcc\n+   sed -i \"s/MVNETA_PMD=y/MVNETA_PMD=n/\" build/.config\n+   sed -i \"s/MVPP2_PMD=n/MVPP2_PMD=y/\" build/.config\n+   make\n+\n+Usage Example\n+-------------\n+\n+MVPP2 PMD requires extra out of tree kernel modules to function properly.\n+`musdk_cma` sources are part of the MUSDK. Please consult\n+``doc/musdk_get_started.txt`` for the detailed build instructions.\n+For `mvpp2x_sysfs` please consult ``Documentation/pp22_sysfs.txt`` for the\n+detailed build instructions.\n+\n+.. code-block:: console\n+\n+   insmod musdk_cma.ko\n+   insmod mvpp2x_sysfs.ko\n+\n+Additionally interfaces used by DPDK application need to be put up:\n+\n+.. code-block:: console\n+\n+   ip link set eth0 up\n+   ip link set eth2 up\n+\n+In order to run testpmd example application following command can be used:\n+\n+.. code-block:: console\n+\n+   ./testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 7 -- \\\n+     --burst=128 --txd=2048 --rxd=1024 --rxq=2 --txq=2  --nb-cores=2 \\\n+     -i -a --rss-udp\n+\n+.. _extstats:\n+\n+Extended stats\n+--------------\n+\n+MVPP2 PMD supports the following extended statistics:\n+\n+\t- ``rx_bytes``:\tnumber of RX bytes\n+\t- ``rx_packets``: number of RX packets\n+\t- ``rx_unicast_packets``: number of RX unicast packets\n+\t- ``rx_errors``: number of RX MAC errors\n+\t- ``rx_fullq_dropped``: number of RX packets dropped due to full RX queue\n+\t- ``rx_bm_dropped``: number of RX packets dropped due to no available buffers in the HW pool\n+\t- ``rx_early_dropped``: number of RX packets that were early dropped\n+\t- ``rx_fifo_dropped``: number of RX packets dropped due to RX fifo overrun\n+\t- ``rx_cls_dropped``: number of RX packets dropped by classifier\n+\t- ``tx_bytes``: number of TX bytes\n+\t- ``tx_packets``: number of TX packets\n+\t- ``tx_unicast_packets``: number of TX unicast packets\n+\t- ``tx_errors``: number of TX MAC errors\n+\n+\n+.. _qossupport:\n+\n QoS Configuration\n -----------------\n \n@@ -302,39 +403,14 @@ Usage example\n    ./testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2,cfg=/home/user/mrvl.conf \\\n      -c 7 -- -i -a --disable-hw-vlan-strip --rxq=3 --txq=3\n \n-\n-Building DPDK\n--------------\n-\n-Driver needs precompiled MUSDK library during compilation.\n-\n-.. code-block:: console\n-\n-   export CROSS_COMPILE=<toolchain>/bin/aarch64-linux-gnu-\n-   ./bootstrap\n-   ./configure --host=aarch64-linux-gnu\n-   make install\n-\n-MUSDK will be installed to `usr/local` under current directory.\n-For the detailed build instructions please consult ``doc/musdk_get_started.txt``.\n-\n-Before the DPDK build process the environmental variable ``LIBMUSDK_PATH`` with\n-the path to the MUSDK installation directory needs to be exported.\n-\n-.. code-block:: console\n-\n-   export LIBMUSDK_PATH=<musdk>/usr/local\n-   export CROSS=aarch64-linux-gnu-\n-   make config T=arm64-armv8a-linuxapp-gcc\n-   sed -i \"s/MVNETA_PMD=y/MVNETA_PMD=n/\" build/.config\n-   sed -i \"s/MVPP2_PMD=n/MVPP2_PMD=y/\" build/.config\n-   make\n+.. _flowapi:\n \n Flow API\n --------\n \n PPv2 offers packet classification capabilities via classifier engine which\n can be configured via generic flow API offered by DPDK.\n+For an additional description please refer to DPDK :ref:`Generic flow API <Generic_flow_API>`.\n \n Supported flow actions\n ~~~~~~~~~~~~~~~~~~~~~~\n@@ -495,31 +571,239 @@ Following limitations need to be taken into account while creating flow rules:\n For additional information about classifier please consult\n ``doc/musdk_cls_user_guide.txt``.\n \n-Usage Example\n--------------\n+.. _mtrapi:\n \n-MVPP2 PMD requires extra out of tree kernel modules to function properly.\n-`musdk_cma` sources are part of the MUSDK. Please consult\n-``doc/musdk_get_started.txt`` for the detailed build instructions.\n-For `mvpp2x_sysfs` please consult ``Documentation/pp22_sysfs.txt`` for the\n-detailed build instructions.\n+Traffic metering and policing\n+-----------------------------\n \n-.. code-block:: console\n+MVPP2 PMD supports DPDK traffic metering and policing that allows the following:\n \n-   insmod musdk_cma.ko\n-   insmod mvpp2x_sysfs.ko\n+1. Meter ingress traffic.\n+2. Do policing.\n+3. Gather statistics.\n \n-Additionally interfaces used by DPDK application need to be put up:\n+For an additional description please refer to DPDK :doc:`Traffic Metering and Policing API <../prog_guide/traffic_metering_and_policing>`.\n \n-.. code-block:: console\n+The policer objects defined by this feature can work with the default policer defined via config file as discribed in :ref:`QoS Support <qossupport>`.\n \n-   ip link set eth0 up\n-   ip link set eth2 up\n+Limitations\n+~~~~~~~~~~~\n \n-In order to run testpmd example application following command can be used:\n+The following capabilities are not supported:\n \n-.. code-block:: console\n+- MTR object meter DSCP table update\n+- MTR object policer action update\n+- MTR object enabled statistics\n \n-   ./testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 7 -- \\\n-     --burst=128 --txd=2048 --rxd=1024 --rxq=2 --txq=2  --nb-cores=2 \\\n-     -i -a --rss-udp\n+Usage example\n+~~~~~~~~~~~~~\n+\n+1. Run testpmd user app:\n+\n+   .. code-block:: console\n+\n+\t\t./testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 6 -- -i -p 3 -a --txd 1024 --rxd 1024\n+\n+2. Create meter profile:\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> add port meter profile 0 0 srtcm_rfc2697 2000 256 256\n+\n+3. Create meter:\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> create port meter 0 0 0 yes d d d 0 1 0\n+\n+4. Create flow rule witch meter attached:\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> flow create 0 ingress pattern ipv4 src is 10.10.10.1 / end actions meter mtr_id 0 / end\n+\n+For a detailed usage description please refer to \"Traffic Metering and Policing\" section in DPDK :doc:`Testpmd Runtime Functions <../testpmd_app_ug/testpmd_funcs>`.\n+\n+\n+\n+.. _tmapi:\n+\n+Traffic Management API\n+----------------------\n+\n+MVPP2 PMD supports generic DPDK Traffic Management API which allows to\n+configure the following features:\n+\n+1. Hierarchical scheduling\n+2. Traffic shaping\n+3. Congestion management\n+4. Packet marking\n+\n+Internally TM is represented by a hierarchy (tree) of nodes.\n+Node which has a parent is called a leaf whereas node without\n+parent is called a non-leaf (root).\n+MVPP2 PMD supports two level hierarchy where level 0 represents ports and level 1 represents tx queues of a given port.\n+\n+.. figure:: img/mvpp2_tm.png\n+\n+Nodes hold following types of settings:\n+\n+- for egress scheduler configuration: weight\n+- for egress rate limiter: private shaper\n+- bitmask indicating which statistics counters will be read\n+\n+Hierarchy is always constructed from the top, i.e first a root node is added\n+then some number of leaf nodes. Number of leaf nodes cannot exceed number\n+of configured tx queues.\n+\n+After hierarchy is complete it can be committed.\n+\n+\n+For an additional description please refer to DPDK :doc:`Traffic Management API <../prog_guide/traffic_management>`.\n+\n+Limitations\n+~~~~~~~~~~~\n+\n+The following capabilities are not supported:\n+\n+- Traffic manager WRED profile and WRED context\n+- Traffic manager shared shaper update\n+- Traffic manager packet marking\n+- Maximum number of levels in hierarchy is 2\n+- Currently dynamic change of a hierarchy is not supported\n+\n+Usage example\n+~~~~~~~~~~~~~\n+\n+For a detailed usage description please refer to \"Traffic Management\" section in DPDK :doc:`Testpmd Runtime Functions <../testpmd_app_ug/testpmd_funcs>`.\n+\n+1. Run testpmd as follows:\n+\n+   .. code-block:: console\n+\n+\t\t./testpmd --vdev=net_mrvl,iface=eth0,iface=eth2,cfg=./qos_config -c 7 -- \\\n+\t\t-i -p 3 --disable-hw-vlan-strip --rxq 3 --txq 3 --txd 1024 --rxd 1024\n+\n+2. Stop all ports:\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> port stop all\n+\n+3. Add shaper profile:\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> add port tm node shaper profile 0 0 900000 70000 0\n+\n+   Parameters have following meaning::\n+\n+\t\t0       - Id of a port.\n+\t\t0       - Id of a new shaper profile.\n+\t\t900000  - Shaper rate in bytes/s.\n+\t\t70000   - Bucket size in bytes.\n+\t\t0       - Packet length adjustment - ignored.\n+\n+4. Add non-leaf node for port 0:\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> add port tm nonleaf node 0 3 -1 0 0 0 0 0 1 3 0\n+\n+   Parameters have following meaning::\n+\n+\t\t 0  - Id of a port\n+\t\t 3  - Id of a new node.\n+\t\t-1  - Indicate that root does not have a parent.\n+\t\t 0  - Priority of the node.\n+\t\t 0  - Weight of the node.\n+\t\t 0  - Id of a level. Since this is a root 0 is passed.\n+\t\t 0  - Id of the shaper profile.\n+\t\t 0  - Number of SP priorities.\n+\t\t 3  - Enable statistics for both number of transmitted packets and bytes.\n+\t\t 0  - Number of shared shapers.\n+\n+5. Add leaf node for tx queue 0:\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> add port tm leaf node 0 0 3 0 30 1 -1 0 0 1 0\n+\n+   Parameters have following meaning::\n+\n+\t\t 0  - Id of a port.\n+\t\t 0  - Id of a new node.\n+\t\t 3  - Id of the parent node.\n+\t\t 0  - Priority of a node.\n+\t\t 30 - WRR weight.\n+\t\t 1  - Id of a level. Since this is a leaf node 1 is passed.\n+\t\t-1  - Id of a shaper. -1 indicates that shaper is not attached.\n+\t\t 0  - Congestion management is not supported.\n+\t\t 0  - Congestion management is not supported.\n+\t\t 1  - Enable statistics counter for number of transmitted packets.\n+\t\t 0  - Number of shared shapers.\n+\n+6. Add leaf node for tx queue 1:\n+\n+   .. code-block:: console\n+\n+\ttestpmd> add port tm leaf node 0 1 3 0 60 1 -1 0 0 1 0\n+\n+   Parameters have following meaning::\n+\n+\t\t 0  - Id of a port.\n+\t\t 1  - Id of a new node.\n+\t\t 3  - Id of the parent node.\n+\t\t 0  - Priority of a node.\n+\t\t 60 - WRR weight.\n+\t\t 1  - Id of a level. Since this is a leaf node 1 is passed.\n+\t\t-1  - Id of a shaper. -1 indicates that shaper is not attached.\n+\t\t 0  - Congestion management is not supported.\n+\t\t 0  - Congestion management is not supported.\n+\t\t 1  - Enable statistics counter for number of transmitted packets.\n+\t\t 0  - Number of shared shapers.\n+\n+7. Add leaf node for tx queue 2:\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> add port tm leaf node 0 2 3 0 99 1 -1 0 0 1 0\n+\n+   Parameters have following meaning::\n+\n+\t\t 0  - Id of a port.\n+\t\t 2  - Id of a new node.\n+\t\t 3  - Id of the parent node.\n+\t\t 0  - Priority of a node.\n+\t\t 99 - WRR weight.\n+\t\t 1  - Id of a level. Since this is a leaf node 1 is passed.\n+\t\t-1  - Id of a shaper. -1 indicates that shaper is not attached.\n+\t\t 0  - Congestion management is not supported.\n+\t\t 0  - Congestion management is not supported.\n+\t\t 1  - Enable statistics counter for number of transmitted packets.\n+\t\t 0  - Number of shared shapers.\n+\n+8. Commit hierarchy:\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> port tm hierarchy commit 0 no\n+\n+  Parameters have following meaning::\n+\n+\t\t0  - Id of a port.\n+\t\tno - Do not flush TM hierarchy if commit fails.\n+\n+9. Start all ports\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> port start all\n+\n+\n+\n+10. Enable forwarding\n+\n+   .. code-block:: console\n+\n+\t\ttestpmd> start\n",
    "prefixes": [
        "v2",
        "11/12"
    ]
}