get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 104842,
    "url": "http://patchwork.dpdk.org/api/patches/104842/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dts/patch/20211203101311.148370-1-yanx.xia@intel.com/",
    "project": {
        "id": 3,
        "url": "http://patchwork.dpdk.org/api/projects/3/?format=api",
        "name": "DTS",
        "link_name": "dts",
        "list_id": "dts.dpdk.org",
        "list_email": "dts@dpdk.org",
        "web_url": "",
        "scm_url": "git://dpdk.org/tools/dts",
        "webscm_url": "http://git.dpdk.org/tools/dts/",
        "list_archive_url": "https://inbox.dpdk.org/dts",
        "list_archive_url_format": "https://inbox.dpdk.org/dts/{}",
        "commit_url_format": ""
    },
    "msgid": "<20211203101311.148370-1-yanx.xia@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20211203101311.148370-1-yanx.xia@intel.com",
    "date": "2021-12-03T10:13:09",
    "name": "[V1,1/3] test_plans/fdir_test_plan: delete fdir",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "42e7e13dedede492fb72c04919a7724478d23ed4",
    "submitter": {
        "id": 2034,
        "url": "http://patchwork.dpdk.org/api/people/2034/?format=api",
        "name": "Yan Xia",
        "email": "yanx.xia@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dts/patch/20211203101311.148370-1-yanx.xia@intel.com/mbox/",
    "series": [
        {
            "id": 20843,
            "url": "http://patchwork.dpdk.org/api/series/20843/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dts/list/?series=20843",
            "date": "2021-12-03T10:13:09",
            "name": "[V1,1/3] test_plans/fdir_test_plan: delete fdir",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/20843/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/104842/comments/",
    "check": "pending",
    "checks": "http://patchwork.dpdk.org/api/patches/104842/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dts-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id F1A4AA0548;\n\tFri,  3 Dec 2021 03:13:11 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id AFB824014F;\n\tFri,  3 Dec 2021 03:13:11 +0100 (CET)",
            "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by mails.dpdk.org (Postfix) with ESMTP id 8C8FE40041\n for <dts@dpdk.org>; Fri,  3 Dec 2021 03:13:09 +0100 (CET)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 02 Dec 2021 18:13:07 -0800",
            "from unknown (HELO dpdk.lan) ([10.240.183.77])\n by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 02 Dec 2021 18:13:04 -0800"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10186\"; a=\"235629866\"",
            "E=Sophos;i=\"5.87,283,1631602800\"; d=\"scan'208\";a=\"235629866\"",
            "E=Sophos;i=\"5.87,283,1631602800\"; d=\"scan'208\";a=\"610219997\""
        ],
        "From": "Yan Xia <yanx.xia@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "Yan Xia <yanx.xia@intel.com>",
        "Subject": "[dts][PATCH V1 1/3] test_plans/fdir_test_plan: delete fdir",
        "Date": "Fri,  3 Dec 2021 10:13:09 +0000",
        "Message-Id": "<20211203101311.148370-1-yanx.xia@intel.com>",
        "X-Mailer": "git-send-email 2.33.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dts@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "test suite reviews and discussions <dts.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dts/>",
        "List-Post": "<mailto:dts@dpdk.org>",
        "List-Help": "<mailto:dts-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dts-bounces@dpdk.org"
    },
    "content": "delete fdir \ndpdk commit-id: 1be514fbc ethdev: remove legacy FDIR filter type support\n\nSigned-off-by: Yan Xia <yanx.xia@intel.com>\n---\n test_plans/fdir_test_plan.rst | 986 ----------------------------------\n 1 file changed, 986 deletions(-)\n delete mode 100644 test_plans/fdir_test_plan.rst",
    "diff": "diff --git a/test_plans/fdir_test_plan.rst b/test_plans/fdir_test_plan.rst\ndeleted file mode 100644\nindex 72ac3207..00000000\n--- a/test_plans/fdir_test_plan.rst\n+++ /dev/null\n@@ -1,986 +0,0 @@\n-.. Copyright (c) <2010-2017>, Intel Corporation\n-   All rights reserved.\n-\n-   Redistribution and use in source and binary forms, with or without\n-   modification, are permitted provided that the following conditions\n-   are met:\n-\n-   - Redistributions of source code must retain the above copyright\n-     notice, this list of conditions and the following disclaimer.\n-\n-   - Redistributions in binary form must reproduce the above copyright\n-     notice, this list of conditions and the following disclaimer in\n-     the documentation and/or other materials provided with the\n-     distribution.\n-\n-   - Neither the name of Intel Corporation nor the names of its\n-     contributors may be used to endorse or promote products derived\n-     from this software without specific prior written permission.\n-\n-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n-   \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n-   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n-   COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n-   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n-   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n-   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n-   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n-   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n-   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n-   OF THE POSSIBILITY OF SUCH DAMAGE.\n-\n-\n-===========================\n-Niantic Flow Director Tests\n-===========================\n-\n-\n-Description\n-===========\n-\n-This document provides the plan for testing the Flow Director (FDir) feature of\n-the Intel 82599 10GbE Ethernet Controller. FDir allows an application to add\n-filters that identify specific flows (or sets of flows), by examining the VLAN\n-header, IP addresses, port numbers, protocol type (IPv4/IPv6, UDP/TCP, SCTP), or\n-a two-byte tuple within the first 64 bytes of the packet.\n-\n-There are two types of filters:\n-\n-1. Perfect match filters, where there must be a match between the fields of\n-   received packets and the programmed filters.\n-2. Signature filters, where there must be a match between a hash-based signature\n-   if the fields in the received packet.\n-\n-There is also support for global masks that affect all filters by masking out\n-some fields, or parts of fields from the matching process.\n-\n-Within DPDK, the FDir feature can be configured through the API in the\n-lib_ethdev library, and this API is used by the ``testpmd`` application.\n-\n-Note that RSS features can not be enabled at the same time as FDir.\n-\n-\n-Prerequisites\n-=============\n-\n-If using vfio the kernel must be >= 3.6+ and VT-d must be enabled in bios.When\n-using vfio, use the following commands to load the vfio driver and bind it\n-to the device under test::\n-\n-   modprobe vfio\n-   modprobe vfio-pci\n-   usertools/dpdk-devbind.py --bind=vfio-pci device_bus_id\n-\n-The DUT has a dual port Intel 82599 10GbE Ethernet Controller, with one of these\n-ports connected to a port on another device that is controlled by the Scapy\n-packet generator.\n-\n-The Ethernet interface identifier of the port that Scapy will use must be known.\n-In all tests below, it is referred to as \"eth9\".\n-\n-The following packets should be created in Scapy. Any reasonable MAC address can\n-be given but other fields must be as shown::\n-\n-   p_udp=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/IP(src=\"192.168.0.1\",\n-     dst=\"192.168.0.2\")/UDP(sport=1024,dport=1024)\n-   p_udp1=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/IP(src=\"192.168.1.1\",\n-     dst=\"192.168.1.2\")/UDP(sport=0,dport=0)\n-   p_tcp=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/IP(src=\"192.168.0.1\",\n-     dst=\"192.168.0.2\")/TCP(sport=1024,dport=1024)\n-   p_ip=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/IP(src=\"192.168.0.1\",\n-     dst=\"192.168.0.2\")\n-   p_ipv6_udp=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/\n-     IPv6(src=\"2001:0db8:85a3:0000:0000:8a2e:0370:7000\",\n-     dst=\"2001:0db8:85a3:0000:0000:8a2e:0370:7338\")/UDP(sport=1024,dport=1024)\n-   p_udp_1=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/\n-     IP(src=\"192.168.0.1\", dst=\"192.168.0.1\")/UDP(sport=1024,dport=1024)\n-   p_udp_2=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")\n-     /IP(src=\"192.168.0.15\", dst=\"192.168.0.15\")/UDP(sport=1024,dport=1024)\n-   p_udp_3=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/\n-     IP(src=\"192.168.0.1\", dst=\"192.168.1.1\")/UDP(sport=1024,dport=1024)\n-   p_udp_4=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/\n-     IP(src=\"10.11.12.1\", dst=\"10.11.12.2\")/UDP(sport=0x4400,dport=0x4500)\n-   p_udp_5=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/\n-     IP(src=\"10.11.12.1\", dst=\"10.11.12.2\")/UDP(sport=0x4411,dport=0x4517)\n-   p_udp_6=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/\n-     IP(src=\"10.11.12.1\", dst=\"10.11.12.2\")/UDP(sport=0x4500,dport=0x5500)\n-   p_gre1=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/\n-     IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/GRE(proto=0x1)/IP()/UDP()\n-   p_gre2=Ether(src=get_if_hwaddr(\"eth9\"), dst=\"00:1B:21:91:3D:2C\")/\n-     IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/GRE(proto=0xff)/IP()/UDP()\n-\n-The test commands below assume that port 0 on the DUT is the port that is\n-connected to the traffic generator. All fdir cmdline please see doc on http://www.dpdk.org/doc/guides/testpmd_app_ug/testpmd_funcs.html#filter-functions.  If this is not the case, the following\n-``testpmd`` commands must be changed, and also the ``--portmask`` parameter.\n-\n-* ``show port fdir <port>``\n-* ``add_perfect_filter <port>``\n-* ``add_signature_filter <port>``\n-* ``set_masks_filter <port>``\n-* ``rx_vlan add all <port>``\n-\n-Most of the tests below involve sending single packets from the generator and\n-checking if the packets match the configured filter, and go to a set queue. To\n-see this, there must be multiple queues, setup by passing the following command-\n-line arguments: ``--nb-cores=2 --rxq=2 --txq=2``. And at run-time, the\n-forwarding mode must be set to rxonly, and the verbosity level > 0::\n-\n-   testpmd> set verbose 1\n-   testpmd> set fwd rxonly\n-\n-\n-Test case: Setting memory reserved for FDir filters\n-===================================================\n-\n-Each FDir filter requires space in the Rx Packet Buffer (perfect filters require\n-32 B of space, and signature filters require 8 B of space). The total amount of\n-memory - and therefore the number of concurrent filters - can be set when\n-initializing FDir.\n-\n-\n-Sub-case: Reserving 64 KB\n--------------------------\n-\n-Start the ``testpmd`` application as follows::\n-\n-   ./testpmd -c 0xf -- -i --portmask=0x1 --disable-rss --pkt-filter-mode=perfect --pkt-filter-size=64K\n-\n-Check with the ``show port fdir`` command that the amount of FDIR filters that\n-are free to be used is equal to 2048 (2048 * 32B = 64KB).::\n-\n-   testpmd> show port fdir 0\n-\n-   ######################## FDIR infos for port 0  ########################\n-   collision: 0          free: 2048\n-   maxhash: 0          maxlen: 0\n-   add : 0            remove : 0\n-   f_add: 0          f_remove: 0\n-   ########################################################################\n-\n-\n-Sub-case: Reserving 128 KB\n---------------------------\n-\n-Start the ``testpmd`` application as follows::\n-\n-   ./testpmd -c 0xf -- -i --portmask=0x1 --disable-rss --pkt-filter-mode=perfect --pkt-filter-size=128K\n-\n-Check with the ``show port fdir`` command that the amount of FDIR filters that\n-are free to be used is equal to 4096 (4096 * 32B = 128KB).::\n-\n-   testpmd> show port fdir 0\n-\n-   ######################## FDIR infos for port 0  ########################\n-   collision: 0          free: 4096\n-   maxhash: 0          maxlen: 0\n-   add : 0            remove : 0\n-   f_add: 0          f_remove: 0\n-   ########################################################################\n-\n-\n-Sub-case: Reserving 256 KB\n---------------------------\n-\n-Start the ``testpmd`` application as follows::\n-\n-   ./testpmd -c 0xf -- -i --portmask=0x1 --disable-rss --pkt-filter-mode=perfect --pkt-filter-size=256K\n-\n-Check with the ``show port fdir`` command that the amount of FDIR filters that\n-are free to be used is equal to 8192 (8192 * 32B = 256KB).::\n-\n-   testpmd> show port fdir 0\n-\n-   ######################## FDIR infos for port 0  ########################\n-   collision: 0          free: 8192\n-   maxhash: 0          maxlen: 0\n-   add : 0            remove : 0\n-   f_add: 0          f_remove: 0\n-   ########################################################################\n-\n-\n-Test case: FDir signature matching mode\n-=======================================\n-\n-This test adds signature filters to the hardware, and then checks whether sent\n-packets match those filters. In order to this, the packet should first be sent\n-from ``Scapy`` before the filter is created, to verify that it is not matched by\n-a FDir filter. The filter is then added from the ``testpmd`` command line and\n-the packet is sent again.\n-\n-Launch the userland ``testpmd`` application as follows::\n-\n-   ./testpmd -c 0xf -- -i --portmask=1 --nb-cores=2 --rxq=2 --txq=2 --disable-rss\n-      --pkt-filter-mode=signature\n-   testpmd> set verbose 1\n-   testpmd> set fwd rxonly\n-   testpmd> start\n-\n-Send the ``p_udp`` packet and verify that there is not a match. Then add the\n-filter and check that there is a match::\n-\n-   testpmd> add_signature_filter 0 udp src 192.168.0.1 1024 dst 192.168.0.2\n-      1024 flexbytes 0x800 vlan 0 queue 1\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x143c - FDIR id=0xe230\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-\n-\n-\n-Send the ``p_tcp`` packet and verify that there is not a match. Then add the\n-filter and check that there is a match::\n-\n-   testpmd> add_signature_filter 0 tcp src 192.168.0.1 1024 dst 192.168.0.2 1024\n-      flexbytes 0x800 vlan 0 queue 1\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x1b47 - FDIR id=0xbd2b\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-Send the ``p_ip`` packet and verify that there is not a match. Then add the\n-filter and check that there is a match::\n-\n-   testpmd> add_signature_filter 0 ip src 192.168.0.1 0 dst 192.168.0.2 0 flexbytes 0x800 vlan 0 queue 1\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x1681 - FDIR id=0xf3ed\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-Send the ``p_ipv6_udp`` packet and verify that there is not a match. Then add the\n-filter and check that there is a match::\n-\n-   testpmd> add_signature_filter 0 udp src 2001:0db8:85a3:0000:0000:8a2e:0370:7000 1024\n-      dst 2001:0db8:85a3:0000:0000:8a2e:0370:7338 1024 flexbytes 0x86dd vlan 0 queue 1\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x86dd - length=62 - nb_segs=1\n-      - FDIR hash=0x4aa - FDIR id=0xea83\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IPV6_HDR\n-\n-\n-Test case: FDir perfect matching mode\n-=====================================\n-\n-This test adds perfect-match filters to the hardware, and then checks whether\n-sent packets match those filters. In order to this, the packet should first be\n-sent from ``Scapy`` before the filter is created, to verify that it is not\n-matched by a FDir filter. The filter is then added from the ``testpmd`` command\n-line and the packet is sent again.::\n-\n-   ./testpmd -c 0xf -- -i --portmask=1 --nb-cores=2 --rxq=2 --txq=2 --disable-rss\n-      --pkt-filter-mode=perfect\n-   testpmd> set verbose 1\n-   testpmd> set fwd rxonly\n-   testpmd> start\n-\n-Send the ``p_udp`` packet and verify that there is not a match. Then add the\n-filter and check that there is a match::\n-\n-   testpmd> add_perfect_filter 0 udp src 192.168.0.1 1024 dst 192.168.0.2 1024\n-      flexbytes 0x800 vlan 0 queue 1 soft 0x14\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x43c - FDIR id=0x14\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-Update the perfect filter match the ``p_udp1`` packet and send the packet and check\n-that there is a match::\n-\n-   testpmd> add_perfect_filter 0 udp src 192.168.1.1 1024 dst 192.168.1.2 0\n-       flexbytes 0x800 vlan 0 queue 1 soft 0x14\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60\n-      -nb_segs=1 - FDIR hash=0x43c - FDIR id=0x14\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-Remove the perfect filter match the ``p_udp1`` and ``p_udp`` packets, and send the packet again.\n-Check that no FDir information is printed::\n-\n-   testpmd> port 0/queue 0: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-Send the ``p_tcp`` packet and verify that there is not a match. Then add the\n-filter and check that there is a match::\n-\n-   testpmd> add_perfect_filter 0 tcp src 192.168.0.1 1024 dst 192.168.0.2 1024\n-      flexbytes 0x800 vlan 0 queue 1 soft 0x15\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x347 - FDIR id=0x15\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-Send the ``p_ip`` packet and verify that there is not a match. Then add the\n-filter and check that there is a match::\n-\n-   testpmd> add_perfect_filter 0 ip src 192.168.0.1 0 dst 192.168.0.2 0\n-      flexbytes 0x800 vlan 0 queue 1 soft 0x17\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x681 - FDIR id=0x17\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-\n-Test case: FDir filter masks\n-============================\n-\n-This section tests the functionality of the setting FDir masks to affect\n-which fields, or parts of fields are used in the matching process. Note that\n-setting up a mask resets all the FDir filters, so the ``testpmd`` application\n-does not have to be relaunched for each sub-case.\n-\n-Launch the userland ``testpmd`` application::\n-\n-   ./testpmd -c 0xf -- -i --portmask=1 --nb-cores=2 --rxq=2 --txq=2 --disable-rss\n-      --pkt-filter-mode=perfect\n-   testpmd> set verbose 1\n-   testpmd> set fwd rxonly\n-   testpmd> start\n-\n-Sub-case: IP address masking\n-----------------------------\n-\n-Create the following IPv4 mask on port 0. This mask means the lower byte of the\n-source and destination IP addresses will not be considered in the matching\n-process::\n-\n-   testpmd> set_masks_filter 0 only_ip_flow 0 src_mask 0xffffff00 0xffff\n-      dst_mask 0xffffff00 0xffff flexbytes 1 vlan_id 1 vlan_prio 1\n-\n-Then, add the following perfect IPv4 filter::\n-\n-   testpmd> add_perfect_filter 0 udp src 192.168.0.0 1024 dst 192.168.0.0 1024\n-      flexbytes 0x800 vlan 0 queue 1 soft 0x17\n-\n-Then send the ``p_udp_1``, ``p_udp_2``, and ``p_udp_3`` packets from Scapy. The\n-first two packets should match the masked filter, but the third packet will not,\n-as it differs in the second lowest IP address byte.::\n-\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x6cf - FDIR id=0x17\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-   port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x6cf - FDIR id=0x17\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-   port 0/queue 0: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-\n-Sub-case: Port masking\n-----------------------\n-\n-Create the following mask on port 0. This mask means the lower byte of the\n-source and destination ports will not be considered in the matching process::\n-\n-   testpmd> set_masks_filter 0 only_ip_flow 0 src_mask 0xffffffff 0xff00\n-      dst_mask 0xffffffff 0xff00 flexbytes 1 vlan_id 1 vlan_prio 1\n-\n-Then, add the following perfect IPv4 filter::\n-\n-   testpmd> add_perfect_filter 0 udp src 10.11.12.1 0x4400 dst 10.11.12.2 0x4500\n-      flexbytes 0x800 vlan 0 queue 1 soft 0x4\n-\n-Then send the ``p_udp_4``, ``p_udp_5``, and ``p_udp_6`` packets from Scapy. The\n-first two packets should match the masked filter, but the third packet will not,\n-as it differs in higher byte of the port numbers.::\n-\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x41d - FDIR id=0x4\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-   port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x41d - FDIR id=0x4\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-   port 0/queue 0: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-Sub-case: L4Type field masking\n-------------------------------\n-\n-Create the following mask on port 0. This mask means that the L4type field of\n-packets will not be considered. Note that in this case, the source and the\n-destination port masks are irrelevant and must be set to zero::\n-\n-   testpmd> set_masks_filter 0 only_ip_flow 1 src_mask 0xffffffff 0x0\n-      dst_mask 0xffffffff 0x0 flexbytes 1 vlan_id 1 vlan_prio 1\n-\n-Then, add the following perfect IPv4 filter::\n-\n-   testpmd> add_perfect_filter 0 ip src 192.168.0.1 0 dst 192.168.0.2 0\n-      flexbytes 0x800 vlan 0 queue 1 soft 0x42\n-\n-Then send the ``p_udp`` and ``p_tcp`` packets from Scapy. Both packets will\n-match the filter::\n-\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x681 - FDIR id=0x42\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-   port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1\n-      - FDIR hash=0x681 - FDIR id=0x42\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-\n-Test case: FDir ``flexbytes`` filtering\n-=======================================\n-\n-The FDir feature supports setting up filters that can match on any two byte\n-field within the first 64 bytes of a packet. Which byte offset to use is\n-set by passing command line arguments to ``testpmd``. In this test a value of\n-``18`` corresponds to the bytes at offset 36 and 37, as the offset is in 2-byte\n-units::\n-\n-   ./testpmd -c 0xf -- -i --portmask=1 --nb-cores=2 --rxq=2 --txq=2 --disable-rss\n-      --pkt-filter-mode=perfect --pkt-filter-flexbytes-offset=18\n-   testpmd> set verbose 1\n-   testpmd> set fwd rxonly\n-   testpmd> start\n-\n-Send the ``p_gre1`` packet and verify that there is not a match. Then add the\n-filter and check that there is a match::\n-\n-   testpmd> add_perfect_filter 0 ip src 192.168.0.1 0 dst 192.168.0.2 0 flexbytes 0x1 vlan 0 queue 1 soft 0x1\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=66 - nb_segs=1\n-      - FDIR hash=0x18b - FDIR id=0x1\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-Send the ``p_gre2`` packet and verify that there is not a match. Then add a\n-second filter and check that there is a match::\n-\n-   testpmd> add_perfect_filter 0 ip src 192.168.0.1 0 dst 192.168.0.2 0 flexbytes 0xff vlan 0 queue 1 soft 0xff\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=66 - nb_segs=1 - FDIR hash=0x3a1 - FDIR id=0xff\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-\n-Sub-case: ``flexbytes`` FDir masking\n-------------------------------------\n-\n-A mask can also be applied to the ``flexbytes`` filter::\n-\n-   testpmd> set_masks_filter 0 only_ip_flow 0 src_mask 0xffffffff 0xffff\n-      dst_mask 0xffffffff 0xffff flexbytes 0 vlan_id 1 vlan_prio 1\n-\n-Then, add the following perfect filter (same as first filter in prev. test), and\n-check that this time both packets match (``p_gre1`` and ``p_gre2``)::\n-\n-   testpmd> add_perfect_filter 0 ip src 192.168.0.1 0 dst 192.168.0.2 0 flexbytes 0x0 vlan 0 queue 1 soft 0x42\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=66 - nb_segs=1 - FDIR hash=0x2f3 - FDIR id=0x42\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-   port 0/queue 1: received 1 packets\n-      src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=66 - nb_segs=1 - FDIR hash=0x2f3 - FDIR id=0x42\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-\n-Test case: FDir VLAN field filtering\n-====================================\n-\n-Connect port 0 of the DUT to a traffic generator capable of sending packets with\n-VLAN headers.\n-\n-Then launch the ``testpmd`` application, and enable VLAN packet reception::\n-\n-   ./testpmd -c 0xf -- -i --portmask=1 --nb-cores=2 --rxq=2 --txq=2 --disable-rss --pkt-filter-mode=perfect\n-   testpmd> set verbose 1\n-   testpmd> set fwd rxonly\n-   testpmd> rx_vlan add all 0\n-   testpmd> start\n-\n-From the traffic generator, transmit a packet with the following details, and\n-verify that it does not match any FDir filters.:\n-\n-* VLAN ID = 0x0FFF\n-* IP source address = 192.168.0.1\n-* IP destination address = 192.168.0.2\n-* UDP source port = 1024\n-* UDP destination port = 1024\n-\n-Then, add the following perfect VLAN filter, resend the packet and verify that\n-it matches the filter::\n-\n-   testpmd> add_perfect_filter 0 udp src 192.168.0.1 1024 dst 192.168.0.2 1024\n-      flexbytes 0x8100 vlan 0xfff queue 1 soft 0x47\n-   testpmd> port 0/queue 1: received 1 packets\n-      src=00:00:03:00:03:00 - dst=00:00:03:00:02:00 - type=0x0800 - length=64 - nb_segs=1\n-      - FDIR hash=0x7e9 - FDIR id=0x47   - VLAN tci=0xfff\n-      PKT_RX_VLAN_PKT\n-      PKT_RX_PKT_RX_FDIR\n-      PKT_RX_IP_CKSUM\n-      PKT_RX_IPV4_HDR\n-\n-\n-Sub-case: VLAN field masking\n-----------------------------\n-\n-First, set the following mask to disable the matching of the VLAN field, and add\n-a perfect filter to match any VLAN identifier::\n-\n-   testpmd> set_masks_filter 0 only_ip_flow 0 src_mask 0xffffffff 0xffff\n-      dst_mask 0xffffffff 0xffff flexbytes 1 vlan_id 0 vlan_prio 0\n-   testpmd> add_perfect_filter 0 udp src 192.168.0.1 1024 dst 192.168.0.2 1024\n-      flexbytes 0x8100 vlan 0 queue 1 soft 0x47\n-\n-Then send the same packet above, but with the VLAN field change first to 0x001,\n-and then to 0x0017. The packets should still match the filter:::\n-\n-   testpmd> port 0/queue 1: received 1 packets\n-   src=00:00:03:00:03:00 - dst=00:00:03:00:02:00 - type=0x0800 - length=64 - nb_segs=1\n-      - FDIR hash=0x7e8 - FDIR id=0x47   - VLAN tci=0x1\n-   PKT_RX_VLAN_PKT\n-   PKT_RX_PKT_RX_FDIR\n-   PKT_RX_IP_CKSUM\n-   PKT_RX_IPV4_HDR\n-   port 0/queue 1: received 1 packets\n-   src=00:00:03:00:03:00 - dst=00:00:03:00:02:00 - type=0x0800 - length=64 - nb_segs=1\n-      - FDIR hash=0x7e8 - FDIR id=0x47   - VLAN tci=0x17\n-   PKT_RX_VLAN_PKT\n-   PKT_RX_PKT_RX_FDIR\n-   PKT_RX_IP_CKSUM\n-   PKT_RX_IPV4_HDR\n-\n-\n-Test Case : test with ipv4 TOS, PROTO, TTL\n-==========================================\n-\n-1. start testpmd and initialize flow director flex payload configuration::\n-\n-      ./testpmd -c fffff -n 4 -- -i --disable-rss --pkt-filter-mode=perfect --rxq=8 --txq=8 --nb-cores=8\n-      testpmd> port stop 0\n-      testpmd> flow_director_flex_payload 0 l2 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\n-      testpmd> flow_director_flex_payload 0 l3 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\n-      testpmd> flow_director_flex_payload 0 l4 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\n-      testpmd> flow_director_flex_mask 0 flow all (0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff)\n-      testpmd> port start 0\n-      testpmd> set verbose 1\n-      testpmd> set fwd rxonly\n-      testpmd> start\n-\n-   Note::\n-\n-      assume FLEXBYTES = \"0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88\"\n-      assume payload = \"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\"\n-\n-2. setup the fdir input set of IPv4::\n-\n-      testpmd> set_fdir_input_set 0 ipv4-other none select\n-      testpmd> set_fdir_input_set 0 ipv4-other src-ipv4 add\n-      testpmd> set_fdir_input_set 0 ipv4-other dst-ipv4 add\n-\n-3. add ipv4-tos to fdir input set, set tos to 16 and 8::\n-\n-      testpmd> set_fdir_input_set 0 ipv4-other ipv4-tos add\n-      setup flow director filter rules,\n-\n-   rule_1::\n-\n-      flow_director_filter 0 mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 tos 16 proto 255 ttl 255 vlan 0 \\\n-      flexbytes (FLEXBYTES) fwd pf queue 1 fd_id 1\n-\n-   rule_2::\n-\n-      flow_director_filter 0 mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 tos 8 proto 255 ttl 255 vlan 0 \\\n-      flexbytes (FLEXBYTES) fwd pf queue 2 fd_id 2\n-\n-   send packet to DUT,\n-\n-   packet_1::\n-\n-       sendp([Ether(dst=\"%s\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", tos=16, proto=255, ttl=255)/Raw(%s)], iface=\"%s\")'\\\n-       %(dst_mac, payload, itf)\n-\n-   packet_1 should be received by queue 1.\n-\n-   packet_2::\n-\n-       sendp([Ether(dst=\"%s\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", tos=8, proto=255, ttl=255)/Raw(%s)], iface=\"%s\")'\\\n-       %(dst_mac, payload, itf)\n-\n-   packet_2 should be received by queue 2.\n-\n-   * Delete rule_1, send packet_1 again, packet_1 should be received by queue 0.\n-   * Delete rule_2, send packet_2 again, packet_2 should be received by queue 0.\n-\n-4. add ipv4-proto to fdir input set, set proto to 253 and 254::\n-\n-      testpmd> set_fdir_input_set 0 ipv4-other ipv4-proto add\n-\n-   setup flow director filter rules\n-   rule_3::\n-\n-      flow_director_filter 0 mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 tos 16 proto 253 ttl 255 vlan 0 \\\n-      flexbytes (FLEXBYTES) fwd pf queue 3 fd_id 3\n-\n-   rule_4::\n-\n-      flow_director_filter 0 mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 tos 8 proto 254 ttl 255 vlan 0   \\\n-      flexbytes (FLEXBYTES) fwd pf queue 4 fd_id 4\n-\n-   send packet to DUT,\n-\n-   packet_3::\n-\n-      'sendp([Ether(dst=\"%s\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", tos=16, proto=253, ttl=255)/Raw(%s)], iface=\"%s\")'\\\n-      %(dst_mac, payload, itf)\n-\n-   packet_3 should be received by queue 3.\n-\n-   packet_4::\n-\n-      'sendp([Ether(dst=\"%s\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", tos=8, proto=254, ttl=255)/Raw(%s)], iface=\"%s\")'\\\n-      %(dst_mac, payload, itf)\n-\n-   packet_4 should be received by queue 4.\n-\n-   * Delete rule_3, send packet_3 again, packet_3 should be received by queue 0.\n-   * Delete rule_4, send packet_4 again, packet_4 should be received by queue 0.\n-\n-5. test ipv4-ttl, set ttl to 32 and 64::\n-\n-      testpmd> set_fdir_input_set 0 ipv4-other ipv4-ttl add\n-\n-   setup flow director filter rules,\n-   rule_5::\n-\n-      flow_director_filter 0 mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 tos 16 proto 253 ttl 32 vlan 0   \\\n-      flexbytes (FLEXBYTES) fwd pf queue 5 fd_id 5\n-\n-   rule_6::\n-\n-      flow_director_filter 0 mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 tos 8 proto 254 ttl 64 vlan 0   \\\n-      flexbytes (FLEXBYTES) fwd pf queue 6 fd_id 6\n-\n-   send packet to DUT,\n-\n-   packet_5::\n-\n-      'sendp([Ether(dst=\"%s\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", tos=16, proto=253, ttl=32)/Raw(%s)], iface=\"%s\")'\\\n-      %(dst_mac, payload, itf)\n-\n-   packet_5 should be received by queue 5.\n-\n-   packet_6::\n-\n-      'sendp([Ether(dst=\"%s\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", tos=8, proto=254, ttl=64)/Raw(%s)], iface=\"%s\")'\\\n-      %(dst_mac, payload, itf)\n-\n-   packet_6 should be received by queue 6.\n-\n-   * Delete rule_5, send packet_5 again, packet_5 should be received by queue 0.\n-   * Delete rule_6, send packet_6 again, packet_6 should be received by queue 0.\n-\n-6. removed all entry of fdir::\n-\n-\n-      testpmd>flush_flow_director 0\n-      testpmd>show port fdir 0\n-\n-Example::\n-\n-   flow_director_filter 0 mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 tos 16 proto 255 ttl 255 vlan 0 flexbytes (0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88) fwd pf queue 1 fd_id 1\n-\n-   flow_director_filter 0 mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 tos 8 proto 255 ttl 255 vlan 0 flexbytes (0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88) fwd pf queue 2 fd_id 2\n-\n-   sendp([Ether(src=\"00:00:00:00:00:01\", dst=\"00:00:00:00:01:00\")/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", tos=16, proto=255, ttl=255)/Raw(load=\"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\")], iface=\"ens260f0\")\n-\n-   sendp([Ether(src=\"00:00:00:00:00:01\", dst=\"00:00:00:00:01:00\")/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", tos=8, proto=255, ttl=255)/Raw(load=\"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\")], iface=\"ens260f0\")\n-\n-Test Case 2: test with ipv6 tc, next-header, hop-limits\n-=======================================================\n-\n-1. start testpmd and initialize flow director flex payload configuration::\n-\n-      ./testpmd -c fffff -n 4 -- -i --disable-rss --pkt-filter-mode=perfect --rxq=8 --txq=8 --nb-cores=8\n-      testpmd> port stop 0\n-      testpmd> flow_director_flex_payload 0 l2 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\n-      testpmd> flow_director_flex_payload 0 l3 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\n-      testpmd> flow_director_flex_payload 0 l4 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\n-      testpmd> flow_director_flex_mask 0 flow all (0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff)\n-      testpmd> port start 0\n-      testpmd> set verbose 1\n-      testpmd> set fwd rxonly\n-      testpmd> start\n-\n-   Note::\n-\n-      assume FLEXBYTES = \"0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88\"\n-      assume payload = \"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\"\n-\n-2. setup the fdir input set of IPv6::\n-\n-      testpmd> set_fdir_input_set 0 ipv6-other none select\n-      testpmd> set_fdir_input_set 0 ipv6-other src-ipv6 add\n-      testpmd> set_fdir_input_set 0 ipv6-other dst-ipv6 add\n-\n-3. add ipv6-tc to fdir input set, set tc to 16 and 8::\n-\n-      testpmd> set_fdir_input_set 0 ipv6-other ipv6-tc add\n-\n-   setup flow director filter rules,\n-\n-   rule_1::\n-\n-      flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 16 proto 255 ttl 64 vlan 0 \\\n-      flexbytes (FLEXBYTES) fwd pf queue 1 fd_id 1\n-\n-   rule_2::\n-\n-      flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 8 proto 255 ttl 64 vlan 0   \\\n-      flexbytes (FLEXBYTES) fwd pf queue 2 fd_id 2\n-\n-   send packet to DUT,\n-\n-   packet_1::\n-\n-      'sendp([Ether(dst=\"%s\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=16, nh=255, hlim=64)/Raw(%s)], iface=\"%s\")' \\\n-      %(dst_mac, payload, itf)\n-\n-   packet_1 should be received by queue 1.\n-\n-   packet_2::\n-\n-      'sendp([Ether(dst=\"%s\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=8, nh=255, hlim=64)/Raw(%s)], iface=\"%s\")' \\\n-      %(dst_mac, payload, itf)\n-\n-   packet_2 should be received by queue 2.\n-\n-   * Delete rule_1, send packet_1 again, packet_1 should be received by queue 0.\n-   * Delete rule_2, send packet_2 again, packet_2 should be received by queue 0.\n-\n-4. add ipv6-next-header to fdir input set, set nh to 253 and 254::\n-\n-      testpmd> set_fdir_input_set 0 ipv6-other ipv6-next-header add\n-\n-   setup flow director filter rules,\n-   rule_3::\n-\n-      flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 16 proto 253 ttl 255 vlan 0   \\\n-      flexbytes (FLEXBYTES) fwd pf queue 3 fd_id 3\n-\n-   rule_4::\n-\n-      flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 8 proto 254 ttl 255 vlan 0   \\\n-      flexbytes (FLEXBYTES) fwd pf queue 4 fd_id 4\n-\n-   send packet to DUT,\n-\n-   packet_3::\n-\n-      'sendp([Ether(dst=\"%s\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=16, nh=253, hlim=64)/Raw(%s)], iface=\"%s\")'\\\n-      %(dst_mac, payload, itf)\n-\n-   packet_3 should be received by queue 3.\n-\n-   packet_4::\n-\n-      'sendp([Ether(dst=\"%s\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=8, nh=254, hlim=64)/Raw(%s)], iface=\"%s\")'\\\n-      %(dst_mac, payload, itf)\n-\n-   packet_4 should be received by queue 4.\n-\n-   * Delete rule_3, send packet_3 again, packet_3 should be received by queue 0.\n-   * Delete rule_4, send packet_4 again, packet_4 should be received by queue 0.\n-\n-5. add ipv6-hop-limits to fdir input set, set hlim to 32 and 64::\n-\n-      testpmd> set_fdir_input_set 0 ipv6-other ipv6-hop-limits add\n-\n-   setup flow director filter rules,\n-   rule_5::\n-\n-      flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 16 proto 253 ttl 32 vlan 0   \\\n-      flexbytes (FLEXBYTES) fwd pf queue 5 fd_id 5\n-\n-   rule_6::\n-\n-      flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 8 proto 254 ttl 64 vlan 0   \\\n-      flexbytes (FLEXBYTES) fwd pf queue 6 fd_id 6\n-\n-   send packet to DUT,\n-\n-   packet_5::\n-\n-      'sendp([Ether(dst=\"%s\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=16, nh=253, hlim=32)/Raw(%s)], iface=\"%s\")'\\\n-      %(dst_mac, payload, itf)\n-\n-   packet_5 should be received by queue 5.\n-\n-   packet_6::\n-\n-      'sendp([Ether(dst=\"%s\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=8, nh=254, hlim=64)/Raw(%s)], iface=\"%s\")'\\\n-      %(dst_mac, payload, itf)\n-\n-   packet_6 should be received by queue 6.\n-\n-   * Delete rule_5, send packet_5 again, packet_5 should be received by queue 0.\n-   * Delete rule_6, send packet_6 again, packet_6 should be received by queue 0.\n-\n- 6. removed all entry of fdir::\n-\n-      testpmd>flush_flow_director 0\n-      testpmd>show port fdir 0\n-\n-Example::\n-\n-   flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 16 proto 255 ttl 64 vlan 0 flexbytes (0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88) fwd pf queue 1 fd_id 1\n-\n-   flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 8 proto 255 ttl 64 vlan 0 flexbytes (0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88) fwd pf queue 2 fd_id 2\n-\n-   flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 16 proto 253 ttl 64 vlan 0 flexbytes (0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88) fwd pf queue 3 fd_id 3\n-\n-   flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 8 proto 254 ttl 64 vlan 0 flexbytes (0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88) fwd pf queue 4 fd_id 4\n-\n-   flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 16 proto 253 ttl 32 vlan 0 flexbytes (0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88) fwd pf queue 5 fd_id 5\n-\n-   flow_director_filter 0 mode IP add flow ipv6-other src 2000::1 dst 2000::2 tos 8 proto 254 ttl 48 vlan 0 flexbytes (0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88) fwd pf queue 6 fd_id 6\n-\n-   sendp([Ether(src=\"00:00:00:00:00:01\", dst=\"00:00:00:00:01:00\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=16, nh=255, hlim=64)/Raw(load=\"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\")], iface=\"ens260f0\")\n-\n-   sendp([Ether(src=\"00:00:00:00:00:01\", dst=\"00:00:00:00:01:00\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=8, nh=255, hlim=64)/Raw(load=\"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\")], iface=\"ens260f0\")\n-\n-   sendp([Ether(src=\"00:00:00:00:00:01\", dst=\"00:00:00:00:01:00\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=16, nh=253, hlim=64)/Raw(load=\"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\")], iface=\"ens260f0\")\n-\n-   sendp([Ether(src=\"00:00:00:00:00:01\", dst=\"00:00:00:00:01:00\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=8, nh=254, hlim=64)/Raw(load=\"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\")], iface=\"ens260f0\")\n-\n-   sendp([Ether(src=\"00:00:00:00:00:01\", dst=\"00:00:00:00:01:00\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=16, nh=253, hlim=32)/Raw(load=\"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\")], iface=\"ens260f0\")\n-\n-   sendp([Ether(src=\"00:00:00:00:00:01\", dst=\"00:00:00:00:01:00\")/IPv6(src=\"2000::1\", dst=\"2000::2\", tc=8, nh=254, hlim=48)/Raw(load=\"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\")], iface=\"ens260f0\")\n-\n-\n-Test Case 3: test with ivlan   (qinq not work)\n-==============================================\n-\n-1. start testpmd and initialize flow director flex payload configuration::\n-\n-      ./testpmd -c fffff -n 4 -- -i --disable-rss --pkt-filter-mode=perfect --rxq=8 --txq=8 --nb-cores=8\n-      testpmd> port stop 0\n-      testpmd> flow_director_flex_payload 0 l2 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\n-      testpmd> flow_director_flex_payload 0 l3 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\n-      testpmd> flow_director_flex_payload 0 l4 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\n-      testpmd> flow_director_flex_mask 0 flow all (0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff)\n-      testpmd> port start 0\n-\n-      testpmd> vlan set qinq on 0\n-\n-      testpmd> set verbose 1\n-      testpmd> set fwd rxonly\n-      testpmd> start\n-\n-   Note::\n-\n-      assume FLEXBYTES = \"0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88\"\n-      assume payload = \"\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x88\\x88\"\n-\n-2. setup the fdir input set::\n-\n-      testpmd> set_fdir_input_set 0 ipv4-udp none select\n-      testpmd> set_fdir_input_set 0 ipv4-udp ivlan add\n-\n-\n-3. setup flow director filter rules,\n-\n-   rule_1::\n-\n-      flow_director_filter 0 mode IP add flow ipv4-udp src 192.168.1.1 1021 dst 192.168.1.2 1022 tos 16 ttl 255 \\\n-      vlan 1 flexbytes (FLEXBYTES) fwd pf queue 1 fd_id 1\n-\n-   rule_2::\n-\n-      flow_director_filter 0 mode IP add flow ipv4-udp src 192.168.1.1 1021 dst 192.168.1.2 1022 tos 16 ttl 255 \\\n-      vlan 15 flexbytes (FLEXBYTES) fwd pf queue 2 fd_id 2\n-\n-   rule_3::\n-\n-      flow_director_filter 0 mode IP add flow ipv4-udp src 192.168.1.1 1021 dst 192.168.1.2 1022 tos 16 ttl 255 \\\n-      vlan 255 flexbytes (FLEXBYTES) fwd pf queue 3 fd_id 3\n-\n-   rule_4::\n-\n-      flow_director_filter 0 mode IP add flow ipv4-udp src 192.168.1.1 1021 dst 192.168.1.2 1022 tos 16 ttl 255 \\\n-      vlan 4095 flexbytes (FLEXBYTES) fwd pf queue 4 fd_id 4\n-\n-4. send packet to DUT,\n-\n-   packet_1::\n-\n-      'sendp([Ether(dst=\"%s\")/Dot1Q(id=0x8100,vlan=16)/Dot1Q(id=0x8100,vlan=1)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\", \\\n-      tos=16, ttl=255)/UDP(sport=\"1021\",dport=\"1022\")/Raw(%s)], iface=\"%s\")' % (dst_mac, payload, itf)\n-\n-   packet_1 should be received by queue 1.\n-\n-   packet_2::\n-\n-      'sendp([Ether(dst=\"%s\")/Dot1Q(id=0x8100,vlan=16)/Dot1Q(id=0x8100,vlan=15)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\", \\\n-      tos=16, ttl=255)/UDP(sport=\"1021\",dport=\"1022\")/Raw(%s)], iface=\"%s\")' % (dst_mac, payload, itf)\n-\n-   packet_2 should be received by queue 2.\n-\n-   packet_3::\n-\n-      'sendp([Ether(dst=\"%s\")/Dot1Q(id=0x8100,vlan=16)/Dot1Q(id=0x8100,vlan=255)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\", \\\n-      tos=16, ttl=255)/UDP(sport=\"1021\",dport=\"1022\")/Raw(%s)], iface=\"%s\")' % (dst_mac, payload, itf)\n-\n-   packet_3 should be received by queue 3.\n-\n-   packet_4::\n-\n-      'sendp([Ether(dst=\"%s\")/Dot1Q(id=0x8100,vlan=16)/Dot1Q(id=0x8100,vlan=4095)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\", \\\n-      tos=16, ttl=255)/UDP(sport=\"1021\",dport=\"1022\")/Raw(%s)], iface=\"%s\")' % (dst_mac, payload, itf)\n-\n-   packet_4 should be received by queue 4.\n-\n-   * Delete rule_1, send packet_1 again, packet_1 should be received by queue 0.\n-   * Delete rule_2, send packet_2 again, packet_2 should be received by queue 0.\n-   * Delete rule_3, send packet_3 again, packet_3 should be received by queue 0.\n-   * Delete rule_4, send packet_4 again, packet_4 should be received by queue 0.\n-\n-5. removed all entry of fdir::\n-\n-      testpmd>flush_flow_director 0\n-      testpmd>show port fdir 0\n",
    "prefixes": [
        "V1",
        "1/3"
    ]
}