get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 94268,
    "url": "http://patches.dpdk.org/api/patches/94268/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/20210616115942.5427-1-zhiminx.huang@intel.com/",
    "project": {
        "id": 3,
        "url": "http://patches.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": "<20210616115942.5427-1-zhiminx.huang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20210616115942.5427-1-zhiminx.huang@intel.com",
    "date": "2021-06-16T11:59:41",
    "name": "[V2] test_plans: add testplan for cvl ipfragment rte flow",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": false,
    "hash": "6c467966e2f7c4c0adf66d8a701808aba249b217",
    "submitter": {
        "id": 1685,
        "url": "http://patches.dpdk.org/api/people/1685/?format=api",
        "name": "Huang, ZhiminX",
        "email": "zhiminx.huang@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dts/patch/20210616115942.5427-1-zhiminx.huang@intel.com/mbox/",
    "series": [
        {
            "id": 17344,
            "url": "http://patches.dpdk.org/api/series/17344/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=17344",
            "date": "2021-06-16T11:59:41",
            "name": "[V2] test_plans: add testplan for cvl ipfragment rte flow",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/17344/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/94268/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/94268/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 5662AA0C45;\n\tWed, 16 Jun 2021 05:30:28 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 5076E4067A;\n\tWed, 16 Jun 2021 05:30:28 +0200 (CEST)",
            "from mga05.intel.com (mga05.intel.com [192.55.52.43])\n by mails.dpdk.org (Postfix) with ESMTP id E1E014003C\n for <dts@dpdk.org>; Wed, 16 Jun 2021 05:30:26 +0200 (CEST)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 15 Jun 2021 20:30:25 -0700",
            "from unknown (HELO localhost.localdomain) ([10.240.183.103])\n by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 15 Jun 2021 20:30:16 -0700"
        ],
        "IronPort-SDR": [
            "\n Ub7/oKk8OcI34msCTOqwvPmK7kEuQRMxY2/4dRVccMwMMTXfFKntTJZSmo3om28pv/h+4J5Eck\n RBi/eY3+T15A==",
            "\n yF70+QTE9dYWv4zigtPHPNKU8Jg4EsWpN1W+iRKCR+y7eCnTpBG3LJuhKXuKiTOplnSynzr8zq\n 4Mu4ekmy1rVQ=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10016\"; a=\"291739271\"",
            "E=Sophos;i=\"5.83,277,1616482800\"; d=\"scan'208\";a=\"291739271\"",
            "E=Sophos;i=\"5.83,277,1616482800\"; d=\"scan'208\";a=\"484715880\""
        ],
        "From": "Zhimin Huang <zhiminx.huang@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "qi.fu@intel.com,\n\tZhimin Huang <zhiminx.huang@intel.com>",
        "Date": "Wed, 16 Jun 2021 19:59:41 +0800",
        "Message-Id": "<20210616115942.5427-1-zhiminx.huang@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dts] [PATCH V2] test_plans: add testplan for cvl ipfragment rte\n flow",
        "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",
        "Sender": "\"dts\" <dts-bounces@dpdk.org>"
    },
    "content": "add new feature cvl ipfragment rte flow testplan,\nthis feature enable ipfragment pkts rss and fdir by ipid\n\nSigned-off-by: Zhimin Huang <zhiminx.huang@intel.com>\n---\n .../cvl_ip_fragment_rte_flow_test_plan.rst    | 658 ++++++++++++++++++\n 1 file changed, 658 insertions(+)\n create mode 100644 test_plans/cvl_ip_fragment_rte_flow_test_plan.rst",
    "diff": "diff --git a/test_plans/cvl_ip_fragment_rte_flow_test_plan.rst b/test_plans/cvl_ip_fragment_rte_flow_test_plan.rst\nnew file mode 100644\nindex 00000000..831bcca9\n--- /dev/null\n+++ b/test_plans/cvl_ip_fragment_rte_flow_test_plan.rst\n@@ -0,0 +1,658 @@\n+.. Copyright (c) <2021>, 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+CVL IP FRAGMENT RTE FLOW TEST\n+=============================\n+\n+Description\n+===========\n+\n+This document provides the plan for testing ip fragment.\n+\n+DPDK-21.05 enable ipv4/6 fragment in rte_flow by IPID on Intel E810 series ethernet cards, major feature are:\n+\n+ - IP fragment packet can be filtered by IPID with RTE_FLOW in FDIR::\n+\n+    queue index\n+    drop\n+    rss queues\n+    passthru\n+    mark\n+    mark/rss\n+\n+ - IP fragment packet is based on 5-tuple(src-ip/dst-ip/src-port/dst-port/l3 protocol) + IPID as inputset to get hash\n+   value in RSS\n+\n+ - It's enable on both PF and VF, this plan test on PF.\n+\n+.. note::\n+\n+   Currently, ipv4/6 fragment packet was treated as \"IPv4/6 pay\", so only validate ipv4/6 fragment pattern.\n+\n+Prerequisites\n+=============\n+\n+1. Hardware:\n+   columbiaville_25g/columbiaville_100g\n+\n+2. Software:\n+   dpdk: http://dpdk.org/git/dpdk\n+\n+   scapy: http://www.secdev.org/projects/scapy/\n+\n+3. Get the pci device id of DUT, for example::\n+\n+     ./usertools/dpdk-devbind.py -s\n+\n+     0000:18:00.0 'Device 1593' if=enp24s0f0 drv=ice unused=vfio-pci\n+     0000:18:00.1 'Device 1593' if=enp24s0f1 drv=ice unused=vfio-pci\n+\n+4. Bind PFs to dpdk driver::\n+\n+     modprobe vfio-pci\n+     ./usertools/dpdk-devbind.py -b vfio-pci 0000:18:00.0 0000:18:00.1\n+\n+5. Launch testpmd::\n+\n+     fdir testpmd command:\n+     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -- -i --rxq=16 --txq=16\n+\n+     rss testpmd command:\n+     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -- -i --rxq=16 --txq=16 --disable-rss --rxd=384 --txd=384\n+\n+     testpmd> set fwd rxonly\n+     testpmd> set verbose 1\n+     testpmd> start\n+\n+\n+Basic Test Steps\n+================\n+\n+The steps same as FDIR/RSS test steps\n+\n+take 'MAC_IPV4_FRAG fdir queue index' for fdir example\n+------------------------------------------------------\n+1. validate and create rule::\n+\n+      flow validate 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 1 / mark / end\n+      Flow rule validated\n+      flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 1 / mark / end\n+      Flow rule #0 created\n+\n+2. send matched pkts and check two pkts distributed to queue 1, `RSS hash=0x261a7deb - RSS queue=0x1` in output::\n+\n+      scapy:\n+      p = Ether()/IP(id=47750)/Raw('X'*666)\n+      pkts=fragment(p, fragsize=500)\n+      sendp(pkts, iface=\"enp1s0\")\n+\n+      Sent 2 packets.\n+            dut.10.240.183.133: port 0/queue 1: received 1 packets\n+      src=00:00:00:00:00:00 - dst=FF:FF:FF:FF:FF:FF - type=0x0800 - length=530 - nb_segs=1 - RSS hash=0x261a7deb - RSS queue=0x1 - FDIR matched ID=0x0 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV4 L4_FRAG  - l2_len=14 - l3_len=20 - l4_len=0 - Receive queue=0x1\n+      ol_flags: PKT_RX_RSS_HASH PKT_RX_FDIR PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_FDIR_ID PKT_RX_OUTER_L4_CKSUM_GOOD\n+      port 0/queue 1: received 1 packets\n+      src=00:00:00:00:00:00 - dst=FF:FF:FF:FF:FF:FF - type=0x0800 - length=204 - nb_segs=1 - RSS hash=0x261a7deb - RSS queue=0x1 - FDIR matched ID=0x0 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV4 L4_FRAG  - l2_len=14 - l3_len=20 - l4_len=0 - Receive queue=0x1\n+      ol_flags: PKT_RX_RSS_HASH PKT_RX_FDIR PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_FDIR_ID PKT_RX_OUTER_L4_CKSUM_GOOD\n+\n+3. send mismatched pkts and check fdir id is none::\n+\n+      scapy:\n+      p = Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666)\n+      pkts=fragment6(p, 500)\n+      sendp(pkts, iface=\"enp1s0\")\n+\n+      Sent 2 packets.\n+            dut.10.240.183.133: port 0/queue 3: received 1 packets\n+      src=00:00:00:00:00:00 - dst=FF:FF:FF:FF:FF:FF - type=0x86dd - length=494 - nb_segs=1 - RSS hash=0xe5ae2d03 - RSS queue=0x3 - hw ptype: L2_ETHER L3_IPV6_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV6_EXT L4_FRAG  - l2_len=14 - l3_len=48 - l4_len=0 - Receive queue=0x3\n+      ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_GOOD\n+      port 0/queue 3: received 1 packets\n+      src=00:00:00:00:00:00 - dst=FF:FF:FF:FF:FF:FF - type=0x86dd - length=296 - nb_segs=1 - RSS hash=0xe5ae2d03 - RSS queue=0x3 - hw ptype: L2_ETHER L3_IPV6_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV6_EXT L4_FRAG  - l2_len=14 - l3_len=48 - l4_len=0 - Receive queue=0x3\n+      ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_GOOD\n+\n+4. destroy rule re-send step 2 pkts and check fdir id is none::\n+\n+      flow destroy 0 rule 0\n+      Flow rule #0 destroyed\n+\n+      p = Ether()/IP(id=47750)/Raw('X'*666)\n+      pkts=fragment(p, fragsize=500)\n+      sendp(pkts, iface=\"enp1s0\")\n+\n+      Sent 2 packets.\n+            dut.10.240.183.133: port 0/queue 7: received 1 packets\n+      src=00:00:00:00:00:00 - dst=FF:FF:FF:FF:FF:FF - type=0x0800 - length=530 - nb_segs=1 - RSS hash=0x4cf81c87 - RSS queue=0x7 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV4 L4_FRAG  - l2_len=14 - l3_len=20 - l4_len=0 - Receive queue=0x7\n+      ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_GOOD\n+      port 0/queue 7: received 1 packets\n+      src=00:00:00:00:00:00 - dst=FF:FF:FF:FF:FF:FF - type=0x0800 - length=204 - nb_segs=1 - RSS hash=0x4cf81c87 - RSS queue=0x7 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV4 L4_FRAG  - l2_len=14 - l3_len=20 - l4_len=0 - Receive queue=0x7\n+      ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_GOOD\n+\n+\n+\n+take 'MAC_IPV4_FRAG_RSS for rss example\n+---------------------------------------\n+1. validate and create rule::\n+\n+      flow validate 0 ingress pattern eth / ipv4 / end actions rss types eth ipv4-frag end key_len 0 queues end / end\n+      Flow rule validated\n+      flow create 0 ingress pattern eth / ipv4 / end actions rss types eth ipv4-frag end key_len 0 queues end / end\n+      Flow rule #0 created\n+\n+2. send basic pkts and record hash values, `RSS hash=0xa1dd9f10 - RSS queue=0x0` in output::\n+\n+      scapy:\n+      p = Ether(src='00:11:22:33:44:55', dst='00:11:22:33:55:66')/IP(src='192.168.6.11', dst='10.11.12.13', id=47750)/Raw('X'*666)\n+      pkts=fragment(p, fragsize=500)\n+      sendp(pkts, iface=\"enp1s0\")\n+\n+      Sent 2 packets.\n+            dut.10.240.183.133: port 0/queue 0: received 1 packets\n+      src=00:11:22:33:44:55 - dst=00:11:22:33:55:66 - type=0x0800 - length=530 - nb_segs=1 - RSS hash=0xa1dd9f10 - RSS queue=0x0 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV4 L4_FRAG  - l2_len=14 - l3_len=20 - l4_len=0 - Receive queue=0x0\n+      ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+      port 0/queue 0: received 1 packets\n+      src=00:11:22:33:44:55 - dst=00:11:22:33:55:66 - type=0x0800 - length=204 - nb_segs=1 - RSS hash=0xa1dd9f10 - RSS queue=0x0 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV4 L4_FRAG  - l2_len=14 - l3_len=20 - l4_len=0 - Receive queue=0x0\n+      ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+\n+3. send change input set pkts and check received pkts have different hash value with basic pkts::\n+\n+      p = Ether(src='00:11:22:33:44:66', dst='00:11:22:33:55:66')/IP(src='192.168.6.11', dst='10.11.12.13', id=47750)/Raw('X'*666)\n+      pkts=fragment(p, fragsize=500)\n+      sendp(pkts, iface=\"enp1s0\")\n+\n+      Sent 2 packets.\n+            dut.10.240.183.133: port 0/queue 12: received 1 packets\n+      src=00:11:22:33:44:66 - dst=00:11:22:33:55:66 - type=0x0800 - length=530 - nb_segs=1 - RSS hash=0xf4a26fbc - RSS queue=0xc - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV4 L4_FRAG  - l2_len=14 - l3_len=20 - l4_len=0 - Receive queue=0xc\n+      ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+      port 0/queue 12: received 1 packets\n+      src=00:11:22:33:44:66 - dst=00:11:22:33:55:66 - type=0x0800 - length=204 - nb_segs=1 - RSS hash=0xf4a26fbc - RSS queue=0xc - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV4 L4_FRAG  - l2_len=14 - l3_len=20 - l4_len=0 - Receive queue=0xc\n+      ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+\n+4. send unhit rule pkts and check received pkts have no hash valuse::\n+\n+      p = Ether()/IPv6()/IPv6ExtHdrFragment(id=47751)/Raw('X'*666)\n+      pkts=fragment6(p, 500)\n+      sendp(pkts, iface=\"enp1s0\")\n+\n+      Sent 2 packets.\n+            dut.10.240.183.133: port 0/queue 0: received 1 packets\n+      src=00:00:00:00:00:00 - dst=FF:FF:FF:FF:FF:FF - type=0x86dd - length=494 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV6_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV6_EXT L4_FRAG  - l2_len=14 - l3_len=48 - l4_len=0 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+      port 0/queue 0: received 1 packets\n+      src=00:00:00:00:00:00 - dst=FF:FF:FF:FF:FF:FF - type=0x86dd - length=296 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV6_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV6_EXT L4_FRAG  - l2_len=14 - l3_len=48 - l4_len=0 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+\n+5. destroy rule re-send basic pkts and check received pkts have no hash valuse::\n+\n+      flow destroy 0 rule 0\n+      Flow rule #0 destroyed\n+\n+      scapy:\n+      p = Ether(src='00:11:22:33:44:55', dst='00:11:22:33:55:66')/IP(src='192.168.6.11', dst='10.11.12.13', id=47750)/Raw('X'*666)\n+      pkts=fragment(p, fragsize=500)\n+      sendp(pkts, iface=\"enp1s0\")\n+\n+      Sent 2 packets.\n+            dut.10.240.183.133: port 0/queue 0: received 1 packets\n+      src=00:11:22:33:44:55 - dst=00:11:22:33:55:66 - type=0x0800 - length=530 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV4 L4_FRAG  - l2_len=14 - l3_len=20 - l4_len=0 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+      port 0/queue 0: received 1 packets\n+      src=00:11:22:33:44:55 - dst=00:11:22:33:55:66 - type=0x0800 - length=204 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_FRAG  - sw ptype: L2_ETHER L3_IPV4 L4_FRAG  - l2_len=14 - l3_len=20 - l4_len=0 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+\n+\n+\n+Test case: MAC_IPV4_FRAG pattern fdir fragment\n+==============================================\n+\n+Subcase 1: MAC_IPV4_FRAG fdir queue index\n+-----------------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 1 / mark / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+Subcase 2: MAC_IPV4_FRAG fdir rss queues\n+-----------------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions rss queues 2 3 end / mark / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+Subcase 3: MAC_IPV4_FRAG fdir passthru\n+--------------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions passthru / mark / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+Subcase 4: MAC_IPV4_FRAG fdir drop\n+----------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions drop / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+Subcase 5: MAC_IPV4_FRAG fdir mark+rss\n+--------------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions mark / rss / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+Subcase 6: MAC_IPV4_FRAG fdir mark\n+----------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions mark id 1 / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+Test case: MAC_IPV6_FRAG pattern fdir fragment\n+==============================================\n+\n+Subcase 1: MAC_IPV6_FRAG fdir queue index\n+-----------------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffffffff packet_id mask 0xffffffff frag_data spec 0x0001 frag_data last 0xffff frag_data mask 0xffff / end actions queue index 1 / mark / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+Subcase 2: MAC_IPV6_FRAG fdir rss queues\n+----------------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffffffff packet_id mask 0xffffffff frag_data spec 0x0001 frag_data last 0xffff frag_data mask 0xffff / end actions rss queues 2 3 / mark / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+Subcase 3: MAC_IPV6_FRAG fdir passthru\n+--------------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffffffff packet_id mask 0xffffffff frag_data spec 0x0001 frag_data last 0xffff frag_data mask 0xffff / end actions passthru / mark / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+Subcase 4: MAC_IPV6_FRAG fdir drop\n+----------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffffffff packet_id mask 0xffffffff frag_data spec 0x0001 frag_data last 0xffff frag_data mask 0xffff / end actions drop / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+Subcase 5: MAC_IPV6_FRAG fdir mark+rss\n+--------------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffffffff packet_id mask 0xffffffff frag_data spec 0x0001 frag_data last 0xffff frag_data mask 0xffff / end actions mark / rss / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+Subcase 6: MAC_IPV6_FRAG fdir mark\n+----------------------------------\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffffffff packet_id mask 0xffffffff frag_data spec 0x0001 frag_data last 0xffff frag_data mask 0xffff / end actions mark id 1 / end\n+\n+2. matched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+3. unmatched packets::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+Test case: MAC_IPV4_FRAG_fdir_with_l2\n+=====================================\n+\n+1. The test step is the same as MAC_IPV4_FRAG pattern fdir fragment\n+\n+2. rule and pkt need contain Ether(dst='XX') addr\n+\n+take 'mac_ipv4_frag_l2dst_fdir_queue_index' example::\n+\n+   1.rules::\n+\n+      flow create 0 ingress pattern eth dst is 00:00:00:00:00:01 / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 1 / mark / end\n+\n+   2.matched packets::\n+\n+     p=Ether(dst='00:00:00:00:00:01')/IP(id=47750)/Raw('X'*666); pkts=fragment(p, fragsize=500)\n+\n+   3.unmatched packets::\n+\n+     p=Ether(dst='00:00:00:00:00:01')/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+\n+.. note::\n+\n+   PF only support take l2 dst mac as inputset\n+\n+Test case: MAC_IPV6_FRAG_fdir_with_l2\n+=====================================\n+\n+1. The test step is the same as MAC_IPV6_FRAG pattern fdir fragment\n+\n+2. rule and pkt need contain Ether(src='XX') addr\n+\n+take 'mac_ipv6_frag_l2dst_fdir_queue_index' example::\n+\n+   1.rules::\n+\n+     flow create 0 ingress pattern eth dst is 00:00:00:00:00:01 / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffffffff packet_id mask 0xffffffff frag_data spec 0x0001 frag_data last 0xffff frag_data mask 0xffff / end actions queue index 1 / mark / end\n+\n+   2.matched packets::\n+\n+     p=Ether(dst='00:00:00:00:00:01')/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+\n+   3.unmatched packets::\n+\n+     p=Ether(dst='00:00:00:00:00:01')/IP(id=47750)/Raw('X'*666); pkts=fragment(p, fragsize=500)\n+\n+.. note::\n+\n+   PF only support take l2 dst mac as inputset\n+\n+\n+Test case: MAC_IPV4_FRAG_fdir_with_l3\n+=====================================\n+\n+1. The test step is the same as MAC_IPV4_FRAG pattern fdir fragment\n+\n+2. rule and pkt need contain IP(src='XX') addr\n+\n+take 'mac_ipv4_frag_l3src_fdir_queue_index' example::\n+\n+   1.rules::\n+\n+     flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 1 / mark / end\n+\n+   2.matched packets::\n+\n+     p=Ether()/IP(id=47750, src='192.168.1.1')/Raw('X'*666); pkts=fragment(p, fragsize=500)\n+\n+   3.unmatched packets::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+\n+subcase 1: MAC_IPV4_FRAG_fdir_with_l3dst\n+----------------------------------------\n+\n+subcase 2: MAC_IPV4_FRAG_fdir_with_l3src\n+----------------------------------------\n+\n+Test case: MAC_IPV6_FRAG_fdir_with_l3\n+=====================================\n+\n+1. The test step is the same as MAC_IPV6_FRAG pattern fdir fragment\n+\n+2. rule and pkt need contain IPv6(src='XX') addr\n+\n+take 'mac_ipv6_frag_l3src_fdir_queue_index' example::\n+\n+   1.rules::\n+\n+     flow create 0 ingress pattern eth / ipv6 src is 2001::1 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffffffff packet_id mask 0xffffffff frag_data spec 0x0001 frag_data last 0xffff frag_data mask 0xffff / end actions queue index 1 / mark / end\n+\n+   2.matched packets::\n+\n+     p=Ether()/IPv6(src='2001::1')/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+\n+   3.unmatched packets::\n+\n+     p=Ether()/IP(id=47750, src='192.168.1.1')/Raw('X'*666); pkts=fragment(p, fragsize=500)\n+\n+subcase 1: MAC_IPV6_FRAG_fdir_with_l3dst\n+----------------------------------------\n+\n+subcase 2: MAC_IPV6_FRAG_fdir_with_l3src\n+----------------------------------------\n+\n+Test case: MAC_IPV4_FRAG RSS\n+============================\n+\n+1. rule::\n+\n+     flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4-frag end key_len 0 queues end / end\n+\n+2. basic packet::\n+\n+     p=Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:BB')/IP(src='192.168.6.11', dst='10.11.12.13', id=47750)/Raw('X'*666); pkts=fragment(p, 500)\n+\n+3. hit pattern packet with changed input set in the rule::\n+\n+     p=Ether(src='00:11:22:33:44:66', dst='66:77:88:99:AA:BB')/IP(src='192.168.6.11', dst='10.11.12.13', id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+     p=Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:CC')/IP(src='192.168.6.11', dst='10.11.12.13', id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+     p=Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:BB')/IP(src='192.168.6.12', dst='10.11.12.13', id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+     p=Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:BB')/IP(src='192.168.6.11', dst='10.11.12.14', id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+     p=Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:BB')/IP(src='192.168.6.11', dst='10.11.12.13', id=47751)/Raw('X'*666); pkts=fragment6(p, 500)\n+\n+4. not hit pattern packets with input set in the rule::\n+\n+     p=Ether()/IPv6()/IPv6ExtHdrFragment(id=47751)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+Test case: MAC_IPV6_FRAG RSS\n+============================\n+\n+1. rules::\n+\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext / end actions rss types ipv6-frag end key_len 0 queues end / end\n+\n+2. basic packet::\n+\n+     p=Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:BB')/IPv6(src='CDCD:910A:2222:5498:8475:1111:3900:1537', dst='CDCD:910A:2222:5498:8475:1111:3900:2020')/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+3. hit pattern packet with changed input set in the rule::\n+\n+     p=Ether(src='00:11:22:33:44:66', dst='66:77:88:99:AA:BB')/IPv6(src='CDCD:910A:2222:5498:8475:1111:3900:1537', dst='CDCD:910A:2222:5498:8475:1111:3900:2020')/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+     p=Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:CC')/IPv6(src='CDCD:910A:2222:5498:8475:1111:3900:1537', dst='CDCD:910A:2222:5498:8475:1111:3900:2020')/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+     p=Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:BB')/IPv6(src='CDCD:910A:2222:5498:8475:1111:3900:1538', dst='CDCD:910A:2222:5498:8475:1111:3900:2020')/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+     p=Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:BB')/IPv6(src='CDCD:910A:2222:5498:8475:1111:3900:1537', dst='CDCD:910A:2222:5498:8475:1111:3900:2021')/IPv6ExtHdrFragment(id=47750)/Raw('X'*666); pkt=fragment6(p, 500)\n+     p=Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:BB')/IPv6(src='CDCD:910A:2222:5498:8475:1111:3900:1537', dst='CDCD:910A:2222:5498:8475:1111:3900:2020')/IPv6ExtHdrFragment(id=47751)/Raw('X'*666); pkt=fragment6(p, 500)\n+\n+4. not hit pattern packets with input set in the rule::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+\n+\n+Test case: PF exclusive validation\n+==================================\n+\n+Subcase 1: exclusive validation fdir rule\n+-----------------------------------------\n+1. create fdir filter rules::\n+\n+     flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 2 / end\n+\n+2. hit pattern/defined input set id, the pkt received for queue 2::\n+\n+     p=Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\", id=47750)/Raw('X'*666)\n+\n+Subcase 2: exclusive validation fdir rule\n+-----------------------------------------\n+1. create fdir filter rules::\n+\n+     flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 2 / end\n+     flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 / end actions queue index 1 / end\n+\n+2. hit pattern/defined input set id, the pkt received for queue 2::\n+\n+     p=Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\", id=47750)/Raw('X'*666)\n+\n+Subcase 3: exclusive validation rss rule\n+----------------------------------------\n+1. create rss rules::\n+\n+     flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n+     flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4-frag end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set id, the pkt received for rss diffent queue::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+     p=Ether()/IP(id=47751)/Raw('X'*666); pkts=fragment6(p, 500)\n+\n+Subcase 4: exclusive validation rss rule\n+----------------------------------------\n+1. create rss rules::\n+\n+     flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4-frag end key_len 0 queues end / end\n+     flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set id, the pkt received for rss same queue::\n+\n+     p=Ether()/IP(id=47750)/Raw('X'*666); pkts=fragment6(p, 500)\n+     p=Ether()/IP(id=47751)/Raw('X'*666); pkts=fragment6(p, 500)\n+\n+Test case: negative validation\n+==============================\n+Note: there may be error message change.\n+\n+1. Invalid action::\n+\n+     flow create 0 ingress pattern eth / ipv6 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 2 / end\n+     flow create 0 ingress pattern eth / ipv6 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 300 / end\n+     flow create 0 ingress pattern eth / ipv6 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 2 / end\n+     flow create 0 ingress pattern eth / ipv6 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1 fragment_offset mask 0xffff / end actions queue index 2 / end\n+     flow create 0 ingress pattern eth / ipv6 packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff fragment_offset spec 0x2000 fragment_offset last 0x1fff fragment_offset mask 0xf / end actions queue index 2 / end\n+     flow create 0 ingress pattern eth / ipv4 packet_id is 47750 fragment_offset last 0x1fff fragment_offset mask 0xffff / end actions queue index 2 / end\n+     flow create 0 ingress pattern eth / ipv4 packet_id is 47750 fragment_offset spec 0x2000 fragment_offset / end actions queue index 2 / end\n+     flow create 0 ingress pattern eth / ipv4 packet_id is 47750 fragment_offset spec 0x2000 fragment_offset last 0x1fff / end actions queue index 2 / end\n+     flow create 0 ingress pattern eth / ipv4 packet_id is 47750 / end actions queue index 300 / end\n+     flow create 0 ingress pattern eth / ipv4 packet_id last 0xffff packet_id mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv4 packet_id spec 0 packet_id last 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv4 / ipv6_frag_ext packet_id is 47750 frag_data spec 0x0001 frag_data last 0xfff8 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id is 47750 frag_data spec 0xfff8 frag_data last 0x0001 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / frag_data spec 0x0001 frag_data last 0xfff8 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id is 47750 frag_data last 0xfff8 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id is 47750 frag_data spec 0x0001 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id is 47750 frag_data spec 0x0001 frag_data last 0xfff8 / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id is 47750 frag_data spec 0x0001 frag_data last 0xfff8 frag_data mask 0xffff / end actions queue index 300 / end\n+     flow create 0 ingress pattern eth / ipv4 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff frag_data spec 0x0001 frag_data last 0xfff8 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0xffff packet_id last 0x0 packet_id mask 0xffff frag_data spec 0x0001 frag_data last 0xfff8 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff frag_data spec 0xfff8 frag_data last 0x0001 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / packet_id last 0xffff packet_id mask 0xffff frag_data spec 0x0001 frag_data last 0xfff8 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id mask 0xffff frag_data spec 0x0001 frag_data last 0xfff8 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffff frag_data spec 0x0001 frag_data last 0xfff8 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff frag_data last 0xfff8 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff frag_data spec 0x0001 frag_data last 0xfff8 / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id spec 0 packet_id last 0xffff packet_id mask 0xffff frag_data spec 0x0001 frag_data mask 0xffff / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv4 / ipv6_frag_ext packet_id is 47750 / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext packet_id is 0x10000 / end actions queue index 1 / end\n+     flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv4-frag end key_len 0 queues end / end\n+     flow create 0 ingress pattern eth / ipv4 / ipv6_frag_ext / end actions rss types ipv6-frag end key_len 0 queues end / end\n+     flow create 0 ingress pattern eth / ipv6 / ipv6_frag_ext / end actions rss types ipv4-frag end key_len 0 queues end / end\n",
    "prefixes": [
        "V2"
    ]
}