Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/94268/?format=api
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" ] }{ "id": 94268, "url": "