Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/89816/?format=api
http://patches.dpdk.org/api/patches/89816/?format=api", "web_url": "http://patches.dpdk.org/project/dts/patch/20210325082834.3714-1-hailinx.xu@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": "<20210325082834.3714-1-hailinx.xu@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/20210325082834.3714-1-hailinx.xu@intel.com", "date": "2021-03-25T08:28:34", "name": "[v2] test_plans/cvl_advanced_rss_pppoe: split pppoe case", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "5b2a3f6daddd60777225c27cfa7d7a38cab5cca2", "submitter": { "id": 1704, "url": "http://patches.dpdk.org/api/people/1704/?format=api", "name": "hailinx", "email": "hailinx.xu@intel.com" }, "delegate": null, "mbox": "http://patches.dpdk.org/project/dts/patch/20210325082834.3714-1-hailinx.xu@intel.com/mbox/", "series": [ { "id": 15872, "url": "http://patches.dpdk.org/api/series/15872/?format=api", "web_url": "http://patches.dpdk.org/project/dts/list/?series=15872", "date": "2021-03-25T08:28:34", "name": "[v2] test_plans/cvl_advanced_rss_pppoe: split pppoe case", "version": 2, "mbox": "http://patches.dpdk.org/series/15872/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/89816/comments/", "check": "pending", "checks": "http://patches.dpdk.org/api/patches/89816/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 9D0C9A0A02;\n\tThu, 25 Mar 2021 09:29:10 +0100 (CET)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 694634067B;\n\tThu, 25 Mar 2021 09:29:10 +0100 (CET)", "from mga17.intel.com (mga17.intel.com [192.55.52.151])\n by mails.dpdk.org (Postfix) with ESMTP id 470F740147\n for <dts@dpdk.org>; Thu, 25 Mar 2021 09:29:07 +0100 (CET)", "from orsmga008.jf.intel.com ([10.7.209.65])\n by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 25 Mar 2021 01:29:04 -0700", "from unknown (HELO localhost.localdomain) ([10.240.183.55])\n by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 25 Mar 2021 01:29:01 -0700" ], "IronPort-SDR": [ "\n ziF163MXxhC0oVqYWhIwRZudDZYQPkOY8zV8TyphrzHdolMO/tKjruHNQPzooz5qeh+98AicEC\n qNwxnZzBJRiA==", "\n RjdAFjC9O7oDFCvSszr0Q9lIElGjd0XhQZ0NcXrCjq6QJGtbA3RKH98y6RGHCAwkHoxP7bVVBw\n UUcMJ1Q4+ivA==" ], "X-IronPort-AV": [ "E=McAfee;i=\"6000,8403,9933\"; a=\"170860623\"", "E=Sophos;i=\"5.81,277,1610438400\"; d=\"scan'208\";a=\"170860623\"", "E=Sophos;i=\"5.81,277,1610438400\"; d=\"scan'208\";a=\"415895002\"" ], "From": "Hailin Xu <hailinx.xu@intel.com>", "To": "dts@dpdk.org", "Cc": "Hailin Xu <hailinx.xu@intel.com>", "Date": "Thu, 25 Mar 2021 16:28:34 +0800", "Message-Id": "<20210325082834.3714-1-hailinx.xu@intel.com>", "X-Mailer": "git-send-email 2.17.1", "Subject": "[dts] [PATCH v2] test_plans/cvl_advanced_rss_pppoe: split pppoe case", "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": "1. split suite only pppoe cases is reserved, about vlan/esp/ah/l2tp/pfcp partial cases is split into a new suite(cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp).\n2. modify suite name.\n\nSigned-off-by: Hailin Xu <hailinx.xu@intel.com>\n---\n\nv1: split pppoe case and modify suite name.\nv2: add commit message.\n \n ...t => cvl_advanced_rss_pppoe_test_plan.rst} | 3373 ++++++-----------\n 1 file changed, 1090 insertions(+), 2283 deletions(-)\n rename test_plans/{cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp_test_plan.rst => cvl_advanced_rss_pppoe_test_plan.rst} (81%)", "diff": "diff --git a/test_plans/cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp_test_plan.rst b/test_plans/cvl_advanced_rss_pppoe_test_plan.rst\nsimilarity index 81%\nrename from test_plans/cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp_test_plan.rst\nrename to test_plans/cvl_advanced_rss_pppoe_test_plan.rst\nindex 543eb94a..994e10ce 100644\n--- a/test_plans/cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp_test_plan.rst\n+++ b/test_plans/cvl_advanced_rss_pppoe_test_plan.rst\n@@ -30,14 +30,14 @@\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: Advanced RSS FOR PPPOE/VLAN/ESP/AH/L2TP/PFCP\n-=================================================\n+===========================\n+CVL: Advanced RSS FOR PPPOE\n+===========================\n \n Description\n ===========\n \n-* Enable RSS for PPPOE/VLAN/ESP/AH/L2TP/PFCP packets.\n+* Enable RSS for PPPOE packets.\n * Symmetric hash for PPPOE packets.\n * Simple_xor hash for PPPOE packets.\n \n@@ -68,42 +68,6 @@ Pattern and input set\n | +---------------------------+----------------------------------------------------------------------------------+\n | | MAC_PPPOE_PAY | eth, l2-src-only, l2-dst-only, pppoe |\n +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_VLAN_IPV4_PAY | c-vlan |\n- | +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_VLAN_IPV4_UDP_PAY | c-vlan |\n- | +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_VLAN_IPV4_TCP_PAY | c-vlan |\n- | +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_VLAN_IPV4_SCTP_PAY | c-vlan |\n- | VLAN +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_VLAN_IPV6_PAY | c-vlan |\n- | +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_VLAN_IPV6_UDP_PAY | c-vlan |\n- | +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_VLAN_IPV6_TCP_PAY | c-vlan |\n- | +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_VLAN_IPV6_SCTP_PAY | c-vlan |\n- +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_IPV4_ESP | esp |\n- | +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_IPV4_UDP_ESP | esp |\n- | ESP +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_IPV6_ESP | esp |\n- | +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_IPV6_UDP_ESP | esp |\n- +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_IPV4_AH | ah |\n- | AH +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_IPV6_AH | ah |\n- +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_IPV4_L2TPv3 | l2tpv3 |\n- | L2TP +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_IPV6_L2TPv3 | l2tpv3 |\n- +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_IPV4_PFCP_SESSION | pfcp |\n- | PFCP +---------------------------+----------------------------------------------------------------------------------+\n- | | MAC_IPV6_PFCP_SESSION | pfcp |\n- +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n \n .. note::\n \n@@ -142,11 +106,18 @@ Prerequisites\n - dpdk: http://dpdk.org/git/dpdk\n - scapy: http://www.secdev.org/projects/scapy/\n \n-3. Copy comm #1 package to /lib/firmware/intel/ice/ddp/ice.pkg,\n- then load driver::\n+3. DDP Package Preparation::\n+\n+ - copy correct ``ice.pkg`` into ``/lib/firmware/updates/intel/ice/ddp/``.\n+ - unbind, then bind device back to ice.ko to update ddp package in the NIC.\n \n- rmmod ice\n- insmod ice.ko\n+.. warning::\n+\n+ Need unbind all ports in NIC, then bind device back to ice.ko\n+\n+.. note::\n+\n+ Of test all test cases, only comms package is expected.\n \n 4. Bind pf to dpdk driver::\n \n@@ -174,12 +145,26 @@ Prerequisites\n >>> sys.path.append('/root')\n >>> from pfcp import PFCP\n \n-Test case: MAC_IPV4_PFCP_SESSION\n-================================\n+Test case: MAC_PPPOE_PAY\n+========================\n+\n+.. Note::\n+\n+ - For PPPOE control packets, the hash input set should be\n+ src mac address + PPP session id, so only add LCP/IPCP packets to the\n+ L2_SRC_ONLY and SESSION_ID subcases in the case.\n+\n+packets mismatched the pattern::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+Subcase 1: MAC_PPPOE_PAY_L2_SRC_ONLY\n+------------------------------------\n \n-1. validate a rule for RSS type of MAC_IPV4_PFCP_SESSION::\n+1. validate a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -191,92 +176,61 @@ Test case: MAC_IPV4_PFCP_SESSION\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_IPV4_PFCP_SESSION::\n+2. create a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_IPV4_PFCP_SESSION packet::\n+ * MAC_PPPOE_PAY packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [SEID], send a packet::\n+ change the field [Source MAC], send a packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=2)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash value is different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:54\")/IP(src=\"192.168.0.25\",dst=\"192.168.0.23\")/UDP(sport=23,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern::\n-\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/UDP(sport=22,dport=25)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Test case: MAC_IPV6_PFCP_SESSION\n-================================\n-\n-1. validate a rule for RSS type of MAC_IPV6_PFCP_SESSION::\n-\n- testpmd> flow validate 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n+ * MAC_PPPOE_LCP_PAY packet::\n \n- testpmd> flow list 0\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n- check the rule not exists in the list.\n+ change the field [Source MAC], send a packet::\n \n-2. create a rule for RSS type of MAC_IPV6_PFCP_SESSION::\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n- testpmd> flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end\n- testpmd> flow list 0\n+ check the hash value is different from the first packet.\n+ change other fields, send packets::\n \n- check the rule exists in the list.\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n-3. send matched packets\n+ check the hash values are the same as the first packet.\n \n- * MAC_IPV6_PFCP_SESSION packet::\n+ * MAC_PPPOE_IPCP_PAY packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n- change the field [SEID], send a packet::\n+ change the field [Source MAC], send a packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=2)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n check the hash value is different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:53\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=23,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern::\n-\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=22,dport=25)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n@@ -286,12 +240,12 @@ Test case: MAC_IPV6_PFCP_SESSION\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_IPV4_L2TPv3\n-==========================\n+Subcase 2: MAC_PPPOE_PAY_L2_DST_ONLY\n+------------------------------------\n \n-1. validate a rule for RSS type of MAC_IPV4_L2TPv3::\n+1. validate a rule for RSS type of MAC_PPPOE_PAY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -303,36 +257,31 @@ Test case: MAC_IPV4_L2TPv3\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_IPV4_L2TPv3::\n+2. create a rule for RSS type of MAC_PPPOE_PAY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_IPV4_L2TPv3 packet::\n+ * MAC_PPPOE_PAY packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\", proto=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [session_id], send a packet::\n+ change the field [Dest MAC], send a packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.4\", proto=115)/L2TP('\\x00\\x00\\x00\\x12')/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash value is different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:53\")/IP(src=\"192.168.0.5\",dst=\"192.168.0.7\", proto=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw(\"x\"*480)], iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern::\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw(\"x\"*480)], iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/UDP(sport=22,dport=25)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ check the hash values are the same as the first packet.\n \n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n@@ -342,12 +291,12 @@ Test case: MAC_IPV4_L2TPv3\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_IPV6_L2TPv3\n-==========================\n+Subcase 3: MAC_PPPOE_PAY_L2_SRC_ONLY_L2_DST_ONLY\n+------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_IPV6_L2TPv3::\n+1. validate a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / end actions rss types eth end key_len 0 queues end / end\n \n get the message::\n \n@@ -359,36 +308,33 @@ Test case: MAC_IPV6_L2TPv3\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_IPV6_L2TPv3::\n+2. create a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / end actions rss types eth end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_IPV6_L2TPv3 packet::\n+ * MAC_PPPOE_PAY packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [session_id], send a packet::\n+ change the fields [Source MAC][Dest MAC], send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=115)/L2TP('\\x00\\x00\\x00\\x12')/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash value is different from the first packet.\n+ check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:53\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\", nh=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern::\n-\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\", proto=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw(\"x\"*480)], iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=22,dport=25)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n@@ -398,12 +344,12 @@ Test case: MAC_IPV6_L2TPv3\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_IPV4_ESP\n-=======================\n+Subcase 4: MAC_PPPOE_PAY_SESSION_ID\n+-----------------------------------\n \n-1. validate a rule for RSS type of MAC_IPV4_ESP::\n+1. validate a rule for RSS type of MAC_PPPOE_PAY_SESSION_ID::\n \n- testpmd> flow validate 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end\n \n get the message::\n \n@@ -415,36 +361,46 @@ Test case: MAC_IPV4_ESP\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_IPV4_ESP::\n+2. create a rule for RSS type of MAC_PPPOE_PAY_SESSION_ID::\n \n- testpmd> flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end\n testpmd> flow list 0\n \n- check the rule exists in the list\n+ check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_IPV4_ESP packet::\n+ * MAC_PPPOE_LCP_PAY packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\",proto=50)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n- change the field [spi], send a packet::\n+ change the field [Session ID], send a packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\",proto=50)/ESP(spi=12)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n check the hash value is different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:53\")/IP(src=\"192.168.0.4\",dst=\"192.168.0.7\",proto=50)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+\n+ check the hash values are the same as the first packet.\n \n- check the hash values are the same as the first packet.\n+ * MAC_PPPOE_IPCP_PAY packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+\n+ change the field [Session ID], send a packet::\n \n-4. send packets mismatched the pattern::\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+\n+ check the hash value is different from the first packet.\n+ change other fields, send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\", proto=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw(\"x\"*480)], iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=50)/ESP(spi=12)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+\n+ check the hash values are the same as the first packet.\n \n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n@@ -454,12 +410,12 @@ Test case: MAC_IPV4_ESP\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_IPV4_UDP_ESP\n-===========================\n+Subcase 5: MAC_PPPOE_PAY_L2_SRC_ONLY_SESSION_ID\n+-----------------------------------------------\n \n-1. validate a rule for RSS type of MAC_IPV4_UDP_ESP::\n+1. validate a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY_SESSION_ID::\n \n- testpmd> flow validate 0 ingress pattern eth / ipv4 / udp / esp / end actions rss types esp end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only pppoe end key_len 0 queues end / end\n \n get the message::\n \n@@ -471,37 +427,50 @@ Test case: MAC_IPV4_UDP_ESP\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_IPV4_UDP_ESP::\n+2. create a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY_SESSION_ID::\n \n- testpmd> flow create 0 ingress pattern eth / ipv4 / udp / esp / end actions rss types esp end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only pppoe end key_len 0 queues end / end\n testpmd> flow list 0\n \n- check the rule exists in the list\n+ check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_IPV4_UDP_ESP packet::\n+ * MAC_PPPOE_LCP_PAY packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(dport=4500)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n- change the field [spi], send a packet::\n+ change the fields [Source MAC][Session ID], send a packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(dport=4500)/ESP(spi=12)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n- check the hash value is different from the first packet.\n+ check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:53\")/IP(src=\"192.168.0.4\",dst=\"192.168.0.7\")/UDP(dport=4500)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern::\n+ * MAC_PPPOE_IPCP_PAY packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+\n+ change the fields [Source MAC][Session ID], send a packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+\n+ check the hash values are different from the first packet.\n+ change other fields, send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(dport=4500)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\",proto=50)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ check the hash values are the same as the first packet.\n \n- check the hash values not exist.\n+4. send packets mismatched the rule, check the hash values not exist.\n \n 5. destroy the rule::\n \n@@ -511,12 +480,22 @@ Test case: MAC_IPV4_UDP_ESP\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_IPV6_ESP\n-=======================\n+Test case: MAC_PPPOE_IPV4_PAY\n+=============================\n+\n+packets mismatched the pattern::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+Subcase 1: MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY\n+-----------------------------------------\n \n-1. validate a rule for RSS type of MAC_IPV6_ESP::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -528,36 +507,46 @@ Test case: MAC_IPV6_ESP\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_IPV6_ESP::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n- check the rule exists in the list\n+ check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_IPV6_ESP packet::\n+ * MAC_PPPOE_IPV4_PAY packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=50)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [spi], send a packet::\n+ change the field [Source MAC], send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=50)/ESP(spi=12)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash value is different from the first packet.\n+ check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:53\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\", nh=50)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern::\n+ * MAC_PPPOE_IPV4_FRAG packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ change the field [Source MAC], send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are different from the first packet.\n+ change other fields, send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\",proto=50)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ check the hash values are the same as the first packet.\n \n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n@@ -567,12 +556,12 @@ Test case: MAC_IPV6_ESP\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_IPV6_UDP_ESP\n-===========================\n+Subcase 2: MAC_PPPOE_IPV4_PAY_L2_DST_ONLY\n+-----------------------------------------\n \n-1. validate a rule for RSS type of MAC_IPV6_UDP_ESP::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / ipv6 / udp / esp / end actions rss types esp end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -584,37 +573,46 @@ Test case: MAC_IPV6_UDP_ESP\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_IPV6_UDP_ESP::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / ipv6 / udp / esp / end actions rss types esp end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n- check the rule exists in the list\n+ check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_IPV6_UDP_ESP packet::\n+ * MAC_PPPOE_IPV4_PAY packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(dport=4500)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [spi], send a packet::\n+ change the field [Dest MAC], send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(dport=4500)/ESP(spi=12)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash value is different from the first packet.\n+ check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:53\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(dport=4500)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern::\n+ * MAC_PPPOE_IPV4_FRAG packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ change the field [Dest MAC], send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are different from the first packet.\n+ change other fields, send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(dport=4500)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=50)/ESP(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ check the hash values are the same as the first packet.\n \n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n@@ -624,12 +622,12 @@ Test case: MAC_IPV6_UDP_ESP\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_IPV4_AH\n-======================\n+Subcase 3: MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY_L2_DST_ONLY\n+-----------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_IPV4_AH::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth end key_len 0 queues end / end\n \n get the message::\n \n@@ -641,999 +639,46 @@ Test case: MAC_IPV4_AH\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_IPV4_AH::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_IPV4_AH packet::\n+ * MAC_PPPOE_IPV4_PAY packet::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\",proto=51)/AH(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [spi], send a packet::\n+ change the fields [Source MAC][Dest MAC], send packets::\n \n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\",proto=51)/AH(spi=12)/Raw(\"x\"*480)], iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(dst=\"00:11:22:33:44:53\")/IP(src=\"192.168.0.4\",dst=\"192.168.0.8\",proto=51)/AH(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=51)/AH(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n-\n- check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Test case: MAC_IPV6_AH\n-======================\n-\n-1. validate a rule for RSS type of MAC_IPV6_AH::\n-\n- testpmd> flow validate 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_IPV6_AH::\n-\n- testpmd> flow create 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_IPV6_AH packet::\n-\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=51)/AH(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n-\n- change the field [spi], send a packet::\n-\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\", nh=51)/AH(spi=12)/Raw(\"x\"*480)], iface=\"ens786f0\")\n-\n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(dst=\"00:11:22:33:44:53\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\", nh=51)/AH(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern::\n-\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\",proto=51)/AH(spi=11)/Raw(\"x\"*480)], iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Test case: MAC_PPPOE_PAY\n-========================\n-\n-Note: For PPPOE control packets, the hash input set should be\n-src mac address + PPP session id, so only add LCP/IPCP packets to the\n-L2_SRC_ONLY and SESSION_ID subcases in the case.\n-\n-packets mismatched the pattern::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n-Subcase 1: MAC_PPPOE_PAY_L2_SRC_ONLY\n-------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Source MAC], send a packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_LCP_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- change the field [Source MAC], send a packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPCP_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- change the field [Source MAC], send a packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 2: MAC_PPPOE_PAY_L2_DST_ONLY\n-------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_PAY_L2_DST_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_PAY_L2_DST_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Dest MAC], send a packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 3: MAC_PPPOE_PAY_L2_SRC_ONLY_L2_DST_ONLY\n-------------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / end actions rss types eth end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / end actions rss types eth end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the fields [Source MAC][Dest MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 4: MAC_PPPOE_PAY_SESSION_ID\n-===================================\n-\n-1. validate a rule for RSS type of MAC_PPPOE_PAY_SESSION_ID::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_PAY_SESSION_ID::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_LCP_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- change the field [Session ID], send a packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPCP_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- change the field [Session ID], send a packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 5: MAC_PPPOE_PAY_L2_SRC_ONLY_SESSION_ID\n------------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY_SESSION_ID::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only pppoe end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_PAY_L2_SRC_ONLY_SESSION_ID::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only pppoe end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_LCP_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- change the fields [Source MAC][Session ID], send a packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPCP_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- change the fields [Source MAC][Session ID], send a packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\",type=0x8864)/PPPoE(sessionid=7)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the rule, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Test case: MAC_PPPOE_IPV4_PAY\n-=============================\n-\n-packets mismatched the pattern::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n-Subcase 1: MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY\n------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV4_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Source MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV4_FRAG packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Source MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 2: MAC_PPPOE_IPV4_PAY_L2_DST_ONLY\n------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_DST_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_DST_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV4_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Dest MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV4_FRAG packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Dest MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 3: MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY_L2_DST_ONLY\n------------------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV4_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the fields [Source MAC][Dest MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV4_FRAG packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the fields [Source MAC][Dest MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 4: MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY\n------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV4_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Source IP], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:54\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV4_FRAG packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Source IP], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:54\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 5: MAC_PPPOE_IPV4_PAY_L3_DST_ONLY\n------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_DST_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_DST_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV4_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Dest IP], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.7\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV4_FRAG packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Dest IP], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.3\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.7\", dst=\"192.168.1.2\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 6: MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY_L3_DST_ONLY\n------------------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY_L3_DST_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY_L3_DST_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV4_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\",dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the fields [Source IP][Dest IP], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\",dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV4_FRAG packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\",dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the fields [Source IP][Dest IP], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\",dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Test case: MAC_PPPOE_IPV4_UDP_PAY\n-=================================\n-\n-packets mismatched the pattern::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n-Subcase 1: MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY\n----------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV4_UDP_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Source MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 2: MAC_PPPOE_IPV4_UDP_PAY_L2_DST_ONLY\n----------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_DST_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_DST_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV4_UDP_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Dest MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 3: MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n----------------------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end\n- testpmd> flow list 0\n+ check the hash values are different from the first packet.\n+ change other fields, send packets::\n \n- check the rule exists in the list.\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n-3. send matched packets\n+ check the hash values are the same as the first packet.\n \n- * MAC_PPPOE_IPV4_UDP_PAY packet::\n+ * MAC_PPPOE_IPV4_FRAG packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n change the fields [Source MAC][Dest MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -1647,12 +692,12 @@ Subcase 3: MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 4: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY\n----------------------------------------------\n+Subcase 4: MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY\n+-----------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -1664,27 +709,42 @@ Subcase 4: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_UDP_PAY packet::\n+ * MAC_PPPOE_IPV4_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n change the field [Source IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:54\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are the same as the first packet.\n+\n+ * MAC_PPPOE_IPV4_FRAG packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ change the field [Source IP], send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are different from the first packet.\n+ change other fields, send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:54\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -1698,12 +758,12 @@ Subcase 4: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 5: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY\n----------------------------------------------\n+Subcase 5: MAC_PPPOE_IPV4_PAY_L3_DST_ONLY\n+-----------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -1715,78 +775,42 @@ Subcase 5: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_UDP_PAY packet::\n+ * MAC_PPPOE_IPV4_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n change the field [Dest IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.7\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 6: MAC_PPPOE_IPV4_UDP_PAY_L4_SRC_ONLY\n----------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L4_SRC_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L4_SRC_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV4_UDP_PAY packet::\n+ * MAC_PPPOE_IPV4_FRAG packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source Port], send packets::\n+ change the field [Dest IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=9,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.3\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.7\", dst=\"192.168.1.2\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -1800,12 +824,12 @@ Subcase 6: MAC_PPPOE_IPV4_UDP_PAY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 7: MAC_PPPOE_IPV4_UDP_PAY_L4_DST_ONLY\n----------------------------------------------\n+Subcase 6: MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY_L3_DST_ONLY\n+-----------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L4_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY_L3_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n \n get the message::\n \n@@ -1817,80 +841,46 @@ Subcase 7: MAC_PPPOE_IPV4_UDP_PAY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_PAY_L3_SRC_ONLY_L3_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_UDP_PAY packet::\n+ * MAC_PPPOE_IPV4_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\",dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest Port], send packets::\n+ change the fields [Source IP][Dest IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\",dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern, check the hash values not exist.\n-\n-5. destroy the rule::\n-\n- testpmd> flow destroy 0 rule 0\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n- send the matched packets, check the hash values of the packets are not exist.\n-\n-Subcase 8: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n----------------------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n-\n- get the message::\n-\n- Flow rule validated\n-\n- check the flow list::\n-\n- testpmd> flow list 0\n-\n- check the rule not exists in the list.\n-\n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV4_UDP_PAY packet::\n+ * MAC_PPPOE_IPV4_FRAG packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\",dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Source Port], send packets::\n+ change the fields [Source IP][Dest IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.9\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\",dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=3)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -1904,12 +894,21 @@ Subcase 8: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 9: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n----------------------------------------------------------\n+Test case: MAC_PPPOE_IPV4_UDP_PAY\n+=================================\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n+packets mismatched the pattern::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+Subcase 1: MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY\n+---------------------------------------------\n+\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY::\n+\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -1921,9 +920,9 @@ Subcase 9: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -1934,16 +933,14 @@ Subcase 9: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Dest Port], send packets::\n+ change the field [Source MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -1957,12 +954,12 @@ Subcase 9: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 10: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n-----------------------------------------------------------\n+Subcase 2: MAC_PPPOE_IPV4_UDP_PAY_L2_DST_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -1974,9 +971,9 @@ Subcase 10: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -1987,16 +984,14 @@ Subcase 10: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Dest IP][Source Port], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ change the field [Dest MAC], send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2010,12 +1005,12 @@ Subcase 10: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 11: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY\n-----------------------------------------------------------\n+Subcase 3: MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end\n \n get the message::\n \n@@ -2027,9 +1022,9 @@ Subcase 11: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -2040,18 +1035,18 @@ Subcase 11: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Dest IP][Dest Port], send packets::\n+ change the fields [Source MAC][Dest MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.3\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.3\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash values are the same as the first packet.\n+ check the hash values are the same as the first packet.\n \n 4. send packets mismatched the pattern, check the hash values not exist.\n \n@@ -2063,12 +1058,12 @@ Subcase 11: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 12: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ONLY\n-----------------------------------------------------------------------------------\n+Subcase 4: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2080,9 +1075,9 @@ Subcase 12: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -2093,18 +1088,14 @@ Subcase 12: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Dest IP][Source Port][Dest Port], send packets::\n+ change the field [Source IP], send packets::\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2118,12 +1109,12 @@ Subcase 12: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 13: MAC_PPPOE_IPV4_UDP_PAY_IPV4\n----------------------------------------\n+Subcase 5: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2135,9 +1126,9 @@ Subcase 13: MAC_PPPOE_IPV4_UDP_PAY_IPV4\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -2148,16 +1139,14 @@ Subcase 13: MAC_PPPOE_IPV4_UDP_PAY_IPV4\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Dest IP], send packets::\n+ change the field [Dest IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2171,21 +1160,12 @@ Subcase 13: MAC_PPPOE_IPV4_UDP_PAY_IPV4\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_PPPOE_IPV4_TCP_PAY\n-=================================\n-\n-packets mismatched the pattern::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n-Subcase 1: MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY\n+Subcase 6: MAC_PPPOE_IPV4_UDP_PAY_L4_SRC_ONLY\n ---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2197,27 +1177,27 @@ Subcase 1: MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_TCP_PAY packet::\n+ * MAC_PPPOE_IPV4_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source MAC], send packets::\n+ change the field [Source Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=9,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2231,12 +1211,12 @@ Subcase 1: MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 2: MAC_PPPOE_IPV4_TCP_PAY_L2_DST_ONLY\n+Subcase 7: MAC_PPPOE_IPV4_UDP_PAY_L4_DST_ONLY\n ---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2248,27 +1228,27 @@ Subcase 2: MAC_PPPOE_IPV4_TCP_PAY_L2_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_TCP_PAY packet::\n+ * MAC_PPPOE_IPV4_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest MAC], send packets::\n+ change the field [Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2282,12 +1262,12 @@ Subcase 2: MAC_PPPOE_IPV4_TCP_PAY_L2_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 3: MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n+Subcase 8: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n ---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2299,29 +1279,29 @@ Subcase 3: MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_TCP_PAY packet::\n+ * MAC_PPPOE_IPV4_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source MAC][Dest MAC], send packets::\n+ change the fields [Source IP][Source Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.9\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2335,12 +1315,12 @@ Subcase 3: MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 4: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY\n----------------------------------------------\n+Subcase 9: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2352,27 +1332,29 @@ Subcase 4: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_TCP_PAY packet::\n+ * MAC_PPPOE_IPV4_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source IP], send packets::\n+ change the fields [Source IP][Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2386,12 +1368,12 @@ Subcase 4: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 5: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY\n----------------------------------------------\n+Subcase 10: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n+----------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2403,27 +1385,29 @@ Subcase 5: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_TCP_PAY packet::\n+ * MAC_PPPOE_IPV4_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Dest IP], send packets::\n+ change the fields [Dest IP][Source Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2437,12 +1421,12 @@ Subcase 5: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 6: MAC_PPPOE_IPV4_TCP_PAY_L4_SRC_ONLY\n----------------------------------------------\n+Subcase 11: MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY\n+----------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L4_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2454,29 +1438,31 @@ Subcase 6: MAC_PPPOE_IPV4_TCP_PAY_L4_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_TCP_PAY packet::\n+ * MAC_PPPOE_IPV4_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source Port], send packets::\n+ change the fields [Dest IP][Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.3\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.3\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash values are the same as the first packet.\n+ check the hash values are the same as the first packet.\n \n 4. send packets mismatched the pattern, check the hash values not exist.\n \n@@ -2488,12 +1474,12 @@ Subcase 6: MAC_PPPOE_IPV4_TCP_PAY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 7: MAC_PPPOE_IPV4_TCP_PAY_L4_DST_ONLY\n----------------------------------------------\n+Subcase 12: MAC_PPPOE_IPV4_UDP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ONLY\n+----------------------------------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L4_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n \n get the message::\n \n@@ -2505,27 +1491,31 @@ Subcase 7: MAC_PPPOE_IPV4_TCP_PAY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_TCP_PAY packet::\n+ * MAC_PPPOE_IPV4_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest Port], send packets::\n+ change the fields [Source IP][Dest IP][Source Port][Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=19)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2539,12 +1529,12 @@ Subcase 7: MAC_PPPOE_IPV4_TCP_PAY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 8: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n----------------------------------------------------------\n+Subcase 13: MAC_PPPOE_IPV4_UDP_PAY_IPV4\n+---------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\n \n get the message::\n \n@@ -2556,29 +1546,29 @@ Subcase 8: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_UDP_PAY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV4_TCP_PAY packet::\n+ * MAC_PPPOE_IPV4_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Source Port], send packets::\n+ change the fields [Source IP][Dest IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.9\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2592,12 +1582,21 @@ Subcase 8: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 9: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n----------------------------------------------------------\n+Test case: MAC_PPPOE_IPV4_TCP_PAY\n+=================================\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n+packets mismatched the pattern::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\",dst=\"192.168.0.21\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+Subcase 1: MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY\n+---------------------------------------------\n+\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY::\n+\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2609,9 +1608,9 @@ Subcase 9: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -2622,16 +1621,14 @@ Subcase 9: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Dest Port], send packets::\n+ change the field [Source MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2645,12 +1642,12 @@ Subcase 9: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 10: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n-----------------------------------------------------------\n+Subcase 2: MAC_PPPOE_IPV4_TCP_PAY_L2_DST_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2662,9 +1659,9 @@ Subcase 10: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -2675,16 +1672,14 @@ Subcase 10: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Dest IP][Source Port], send packets::\n+ change the field [Dest MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=9,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=9,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2698,12 +1693,12 @@ Subcase 10: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 11: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY\n-----------------------------------------------------------\n+Subcase 3: MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end\n \n get the message::\n \n@@ -2715,9 +1710,9 @@ Subcase 11: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -2728,16 +1723,16 @@ Subcase 11: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Dest IP][Dest Port], send packets::\n+ change the fields [Source MAC][Dest MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=90)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=25,dport=90)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2751,12 +1746,12 @@ Subcase 11: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 12: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ONLY\n-----------------------------------------------------------------------------------\n+Subcase 4: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2768,9 +1763,9 @@ Subcase 12: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -2781,18 +1776,14 @@ Subcase 12: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Dest IP][Source Port][Dest Port], send packets::\n+ change the field [Source IP], send packets::\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.5\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2806,22 +1797,12 @@ Subcase 12: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_PPPOE_IPV6_PAY\n-=============================\n-\n-packets mismatched the pattern::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n-Subcase 1: MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY\n------------------------------------------\n+Subcase 5: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2833,42 +1814,27 @@ Subcase 1: MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Source MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV6_FRAG packet::\n+ * MAC_PPPOE_IPV4_TCP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source MAC], send packets::\n+ change the fields [Dest IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash value is different from the first packet.\n+ check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2882,12 +1848,12 @@ Subcase 1: MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 2: MAC_PPPOE_IPV6_PAY_L2_DST_ONLY\n------------------------------------------\n+Subcase 6: MAC_PPPOE_IPV4_TCP_PAY_L4_SRC_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2899,42 +1865,27 @@ Subcase 2: MAC_PPPOE_IPV6_PAY_L2_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Dest MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV6_FRAG packet::\n+ * MAC_PPPOE_IPV4_TCP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest MAC], send packets::\n+ change the field [Source Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash value is different from the first packet.\n+ check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -2948,12 +1899,12 @@ Subcase 2: MAC_PPPOE_IPV6_PAY_L2_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 3: MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY_L2_DST_ONLY\n------------------------------------------------------\n+Subcase 7: MAC_PPPOE_IPV4_TCP_PAY_L4_DST_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -2965,46 +1916,27 @@ Subcase 3: MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY_L2_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Source MAC][Dest MAC], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash value is different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV6_FRAG packet::\n+ * MAC_PPPOE_IPV4_TCP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source MAC][Dest MAC], send packets::\n+ change the field [Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=19)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash value is different from the first packet.\n+ check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.7\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3018,12 +1950,12 @@ Subcase 3: MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY_L2_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 4: MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY\n------------------------------------------\n+Subcase 8: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3035,42 +1967,29 @@ Subcase 4: MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end\n- testpmd> flow list 0\n-\n- check the rule exists in the list.\n-\n-3. send matched packets\n-\n- * MAC_PPPOE_IPV6_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Source IP], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n \n- check the hash value is different from the first packet.\n- change other fields, send packets::\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow list 0\n \n- sendp([Ether(src=\"00:11:22:33:44:54\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ check the rule exists in the list.\n \n- check the hash values are the same as the first packet.\n+3. send matched packets\n \n- * MAC_PPPOE_IPV6_FRAG packet::\n+ * MAC_PPPOE_IPV4_TCP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source IP], send packets::\n+ change the fields [Source IP][Source Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash value is different from the first packet.\n+ check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:54\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.9\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3084,12 +2003,12 @@ Subcase 4: MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 5: MAC_PPPOE_IPV6_PAY_L3_DST_ONLY\n------------------------------------------\n+Subcase 9: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY_L3_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3101,42 +2020,29 @@ Subcase 5: MAC_PPPOE_IPV6_PAY_L3_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY_L3_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the field [Dest IP], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV6_FRAG packet::\n+ * MAC_PPPOE_IPV4_TCP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest IP], send packets::\n+ change the fields [Source IP][Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3150,12 +2056,12 @@ Subcase 5: MAC_PPPOE_IPV6_PAY_L3_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 6: MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY_L3_DST_ONLY\n------------------------------------------------------\n+Subcase 10: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n+----------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3167,46 +2073,29 @@ Subcase 6: MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY_L3_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_PAY packet::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- change the fields [Source IP][Dest IP], send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are different from the first packet.\n- change other fields, send packets::\n-\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n- check the hash values are the same as the first packet.\n-\n- * MAC_PPPOE_IPV6_FRAG packet::\n+ * MAC_PPPOE_IPV4_TCP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Dest IP], send packets::\n+ change the fields [Dest IP][Source Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=9,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=9,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3220,21 +2109,12 @@ Subcase 6: MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY_L3_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_PPPOE_IPV6_UDP_PAY\n-=================================\n-\n-packets mismatched the pattern::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n-Subcase 1: MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY\n----------------------------------------------\n+Subcase 11: MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY\n+----------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3246,27 +2126,29 @@ Subcase 1: MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_UDP_PAY packet::\n+ * MAC_PPPOE_IPV4_TCP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source MAC], send packets::\n+ change the fields [Dest IP][Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=90)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.7\")/TCP(sport=25,dport=90)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3280,12 +2162,12 @@ Subcase 1: MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 2: MAC_PPPOE_IPV6_UDP_PAY_L2_DST_ONLY\n----------------------------------------------\n+Subcase 12: MAC_PPPOE_IPV4_TCP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ONLY\n+----------------------------------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n \n get the message::\n \n@@ -3297,27 +2179,31 @@ Subcase 2: MAC_PPPOE_IPV6_UDP_PAY_L2_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV4_TCP_PAY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_UDP_PAY packet::\n+ * MAC_PPPOE_IPV4_TCP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest MAC], send packets::\n+ change the fields [Source IP][Dest IP][Source Port][Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.5\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3331,12 +2217,22 @@ Subcase 2: MAC_PPPOE_IPV6_UDP_PAY_L2_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 3: MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n----------------------------------------------------------\n+Test case: MAC_PPPOE_IPV6_PAY\n+=============================\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n+packets mismatched the pattern::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+Subcase 1: MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY\n+-----------------------------------------\n+\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY::\n+\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3348,29 +2244,42 @@ Subcase 3: MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_UDP_PAY packet::\n+ * MAC_PPPOE_IPV6_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source MAC][Dest MAC], send packets::\n+ change the field [Source MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash values are different from the first packet.\n+ check the hash value is different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are the same as the first packet.\n+\n+ * MAC_PPPOE_IPV6_FRAG packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ change the field [Source MAC], send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash value is different from the first packet.\n+ change other fields, send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3384,12 +2293,12 @@ Subcase 3: MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 4: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY\n----------------------------------------------\n+Subcase 2: MAC_PPPOE_IPV6_PAY_L2_DST_ONLY\n+-----------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3401,27 +2310,42 @@ Subcase 4: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_UDP_PAY packet::\n+ * MAC_PPPOE_IPV6_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source IP], send packets::\n+ change the field [Dest MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash values are different from the first packet.\n+ check the hash value is different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are the same as the first packet.\n+\n+ * MAC_PPPOE_IPV6_FRAG packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ change the field [Dest MAC], send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash value is different from the first packet.\n+ change other fields, send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3435,12 +2359,12 @@ Subcase 4: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 5: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY\n----------------------------------------------\n-\n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY::\n+Subcase 3: MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY_L2_DST_ONLY\n+-----------------------------------------------------\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n+\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth end key_len 0 queues end / end\n \n get the message::\n \n@@ -3452,27 +2376,46 @@ Subcase 5: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_UDP_PAY packet::\n+ * MAC_PPPOE_IPV6_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest IP], send packets::\n+ change the field [Source MAC][Dest MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash values are different from the first packet.\n+ check the hash value is different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are the same as the first packet.\n+\n+ * MAC_PPPOE_IPV6_FRAG packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ change the field [Source MAC][Dest MAC], send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash value is different from the first packet.\n+ change other fields, send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3486,12 +2429,12 @@ Subcase 5: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 6: MAC_PPPOE_IPV6_UDP_PAY_L4_SRC_ONLY\n----------------------------------------------\n+Subcase 4: MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY\n+-----------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L4_SRC_ONLY\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3503,27 +2446,42 @@ Subcase 6: MAC_PPPOE_IPV6_UDP_PAY_L4_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_UDP_PAY packet::\n+ * MAC_PPPOE_IPV6_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source Port], send packets::\n+ change the field [Source IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash values are different from the first packet.\n+ check the hash value is different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:54\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are the same as the first packet.\n+\n+ * MAC_PPPOE_IPV6_FRAG packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ change the field [Source IP], send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash value is different from the first packet.\n+ change other fields, send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:54\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3537,12 +2495,12 @@ Subcase 6: MAC_PPPOE_IPV6_UDP_PAY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 7: MAC_PPPOE_IPV6_UDP_PAY_L4_DST_ONLY\n----------------------------------------------\n+Subcase 5: MAC_PPPOE_IPV6_PAY_L3_DST_ONLY\n+-----------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L4_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY_L3_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3554,27 +2512,42 @@ Subcase 7: MAC_PPPOE_IPV6_UDP_PAY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY_L3_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_UDP_PAY packet::\n+ * MAC_PPPOE_IPV6_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest Port], send packets::\n+ change the field [Dest IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are the same as the first packet.\n+\n+ * MAC_PPPOE_IPV6_FRAG packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ change the field [Dest IP], send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are different from the first packet.\n+ change other fields, send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3588,12 +2561,12 @@ Subcase 7: MAC_PPPOE_IPV6_UDP_PAY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 8: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n----------------------------------------------------------\n+Subcase 6: MAC_PPPOE_IPV6_PAY_L3_SRC_ONLY_L3_DST_ONLY\n+-----------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_PAY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end\n \n get the message::\n \n@@ -3605,29 +2578,46 @@ Subcase 8: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_PAY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_UDP_PAY packet::\n+ * MAC_PPPOE_IPV6_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Source Port], send packets::\n+ change the fields [Source IP][Dest IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are the same as the first packet.\n+\n+ * MAC_PPPOE_IPV6_FRAG packet::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ change the fields [Source IP][Dest IP], send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+ check the hash values are different from the first packet.\n+ change other fields, send packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/IPv6ExtHdrFragment()/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3641,12 +2631,21 @@ Subcase 8: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 9: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n----------------------------------------------------------\n+Test case: MAC_PPPOE_IPV6_UDP_PAY\n+=================================\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n+packets mismatched the pattern::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+Subcase 1: MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY\n+---------------------------------------------\n+\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY::\n+\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3658,9 +2657,9 @@ Subcase 9: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -3671,18 +2670,16 @@ Subcase 9: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Dest Port], send packets::\n+ change the field [Source MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash values are the same as the first packet.\n+ check the hash values are the same as the first packet.\n \n 4. send packets mismatched the pattern, check the hash values not exist.\n \n@@ -3694,12 +2691,12 @@ Subcase 9: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 10: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n-----------------------------------------------------------\n+Subcase 2: MAC_PPPOE_IPV6_UDP_PAY_L2_DST_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3711,9 +2708,9 @@ Subcase 10: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -3724,18 +2721,16 @@ Subcase 10: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Dest IP][Source Port], send packets::\n+ change the field [Dest MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash values are the same as the first packet.\n+ check the hash values are the same as the first packet.\n \n 4. send packets mismatched the pattern, check the hash values not exist.\n \n@@ -3747,12 +2742,12 @@ Subcase 10: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 11: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY\n-----------------------------------------------------------\n+Subcase 3: MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end\n \n get the message::\n \n@@ -3764,9 +2759,9 @@ Subcase 11: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -3777,16 +2772,16 @@ Subcase 11: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Dest IP][Dest Port], send packets::\n+ change the fields [Source MAC][Dest MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3800,12 +2795,12 @@ Subcase 11: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 12: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ONLY\n-----------------------------------------------------------------------------------\n+Subcase 4: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3817,9 +2812,9 @@ Subcase 12: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -3830,18 +2825,14 @@ Subcase 12: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Dest IP][Source Port][Dest Port], send packets::\n+ change the field [Source IP], send packets::\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3855,21 +2846,12 @@ Subcase 12: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_PPPOE_IPV6_TCP_PAY\n-=================================\n-\n-packets mismatched the pattern::\n-\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n-\n-Subcase 1: MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY\n+Subcase 5: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY\n ---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3881,27 +2863,27 @@ Subcase 1: MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_TCP_PAY packet::\n+ * MAC_PPPOE_IPV6_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source MAC], send packets::\n+ change the field [Dest IP], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3915,12 +2897,12 @@ Subcase 1: MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 2: MAC_PPPOE_IPV6_TCP_PAY_L2_DST_ONLY\n+Subcase 6: MAC_PPPOE_IPV6_UDP_PAY_L4_SRC_ONLY\n ---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L4_SRC_ONLY\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3932,27 +2914,27 @@ Subcase 2: MAC_PPPOE_IPV6_TCP_PAY_L2_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_TCP_PAY packet::\n+ * MAC_PPPOE_IPV6_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest MAC], send packets::\n+ change the field [Source Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -3966,12 +2948,12 @@ Subcase 2: MAC_PPPOE_IPV6_TCP_PAY_L2_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 3: MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n----------------------------------------------------------\n+Subcase 7: MAC_PPPOE_IPV6_UDP_PAY_L4_DST_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -3983,29 +2965,27 @@ Subcase 3: MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_TCP_PAY packet::\n+ * MAC_PPPOE_IPV6_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source MAC][Dest MAC], send packets::\n+ change the field [Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -4019,12 +2999,12 @@ Subcase 3: MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 4: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY\n----------------------------------------------\n+Subcase 8: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4036,27 +3016,29 @@ Subcase 4: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_TCP_PAY packet::\n+ * MAC_PPPOE_IPV6_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source IP], send packets::\n+ change the fields [Source IP][Source Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -4070,12 +3052,12 @@ Subcase 4: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 5: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY\n----------------------------------------------\n+Subcase 9: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4087,29 +3069,31 @@ Subcase 5: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_TCP_PAY packet::\n+ * MAC_PPPOE_IPV6_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest IP], send packets::\n+ change the fields [Source IP][Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash values are the same as the first packet.\n+ check the hash values are the same as the first packet.\n \n 4. send packets mismatched the pattern, check the hash values not exist.\n \n@@ -4121,12 +3105,12 @@ Subcase 5: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 6: MAC_PPPOE_IPV6_TCP_PAY_L4_SRC_ONLY\n----------------------------------------------\n+Subcase 10: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n+----------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L4_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4138,29 +3122,31 @@ Subcase 6: MAC_PPPOE_IPV6_TCP_PAY_L4_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_TCP_PAY packet::\n+ * MAC_PPPOE_IPV6_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Source Port], send packets::\n+ change the fields [Dest IP][Source Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash values are the same as the first packet.\n+ check the hash values are the same as the first packet.\n \n 4. send packets mismatched the pattern, check the hash values not exist.\n \n@@ -4172,12 +3158,12 @@ Subcase 6: MAC_PPPOE_IPV6_TCP_PAY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 7: MAC_PPPOE_IPV6_TCP_PAY_L4_DST_ONLY\n----------------------------------------------\n+Subcase 11: MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY\n+----------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L4_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4189,27 +3175,29 @@ Subcase 7: MAC_PPPOE_IPV6_TCP_PAY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_TCP_PAY packet::\n+ * MAC_PPPOE_IPV6_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [Dest Port], send packets::\n+ change the fields [Dest IP][Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -4223,12 +3211,12 @@ Subcase 7: MAC_PPPOE_IPV6_TCP_PAY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 8: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n----------------------------------------------------------\n+Subcase 12: MAC_PPPOE_IPV6_UDP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ONLY\n+----------------------------------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end\n \n get the message::\n \n@@ -4240,29 +3228,31 @@ Subcase 8: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_UDP_PAY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_PPPOE_IPV6_TCP_PAY packet::\n+ * MAC_PPPOE_IPV6_UDP_PAY packet::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Source Port], send packets::\n+ change the fields [Source IP][Dest IP][Source Port][Dest Port], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/UDP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -4276,12 +3266,21 @@ Subcase 8: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 9: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n----------------------------------------------------------\n+Test case: MAC_PPPOE_IPV6_TCP_PAY\n+=================================\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n+packets mismatched the pattern::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+Subcase 1: MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY\n+---------------------------------------------\n+\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY::\n+\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4293,9 +3292,9 @@ Subcase 9: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -4306,16 +3305,14 @@ Subcase 9: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Dest Port], send packets::\n+ change the field [Source MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -4329,12 +3326,12 @@ Subcase 9: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 10: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n-----------------------------------------------------------\n+Subcase 2: MAC_PPPOE_IPV6_TCP_PAY_L2_DST_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4346,9 +3343,9 @@ Subcase 10: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -4359,16 +3356,14 @@ Subcase 10: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Dest IP][Source Port], send packets::\n+ change the field [Dest MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -4382,12 +3377,12 @@ Subcase 10: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 11: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY\n-----------------------------------------------------------\n+Subcase 3: MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end\n \n get the message::\n \n@@ -4399,9 +3394,9 @@ Subcase 11: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L2_SRC_ONLY_L2_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -4412,16 +3407,16 @@ Subcase 11: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Dest IP][Dest Port], send packets::\n+ change the fields [Source MAC][Dest MAC], send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -4435,12 +3430,12 @@ Subcase 11: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Subcase 12: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ONLY\n-----------------------------------------------------------------------------------\n+Subcase 4: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4452,9 +3447,9 @@ Subcase 12: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n@@ -4465,18 +3460,14 @@ Subcase 12: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the fields [Source IP][Dest IP][Source Port][Dest Port], send packets::\n+ change the field [Source IP], send packets::\n \n sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n- sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n@@ -4490,12 +3481,12 @@ Subcase 12: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ON\n check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_VLAN_IPV4_PAY\n-============================\n+Subcase 5: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_VLAN_IPV4_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4507,50 +3498,46 @@ Test case: MAC_VLAN_IPV4_PAY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_VLAN_IPV4_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_VLAN_IPV4_PAY packet::\n+ * MAC_PPPOE_IPV6_TCP_PAY packet::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [VLAN ID], send packets::\n+ change the field [Dest IP], send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- check the hash value is different from the first packet.\n+ check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:99\", dst=\"00:11:22:33:44:53\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.3\", dst=\"192.168.1.4\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern::\n-\n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n testpmd> flow destroy 0 rule 0\n testpmd> flow list 0\n \n- check the rule not exists.\n+ check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_VLAN_IPV4_UDP_PAY\n-================================\n+Subcase 6: MAC_PPPOE_IPV6_TCP_PAY_L4_SRC_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4562,51 +3549,46 @@ Test case: MAC_VLAN_IPV4_UDP_PAY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_VLAN_IPV4_UDP_PAY packet::\n+ * MAC_PPPOE_IPV6_TCP_PAY packet::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [VLAN ID], send packets::\n+ change the field [Source Port], send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:99\", dst=\"00:11:22:33:44:53\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.3\", dst=\"192.168.1.4\")/UDP(sport=19,dport=99)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are the same as as the first packet.\n-\n-4. send packets mismatched the pattern::\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ check the hash values are the same as the first packet.\n \n- check the hash values of the packets not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n testpmd> flow destroy 0 rule 0\n testpmd> flow list 0\n \n- check the rule not exists.\n+ check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_VLAN_IPV4_TCP_PAY\n-================================\n+Subcase 7: MAC_PPPOE_IPV6_TCP_PAY_L4_DST_ONLY\n+---------------------------------------------\n \n-1. validate a rule for RSS type of MAC_VLAN_IPV4_TCP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4618,51 +3600,46 @@ Test case: MAC_VLAN_IPV4_TCP_PAY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_VLAN_IPV4_TCP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_VLAN_IPV4_TCP_PAY packet::\n+ * MAC_PPPOE_IPV6_TCP_PAY packet::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [VLAN ID], send packets::\n+ change the field [Dest Port], send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:99\", dst=\"00:11:22:33:44:53\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.3\", dst=\"192.168.1.4\")/TCP(sport=19,dport=99)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are the same as as the first packet.\n-\n-4. send packets mismatched the pattern::\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ check the hash values are the same as the first packet.\n \n- check the hash values of the packets not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n testpmd> flow destroy 0 rule 0\n testpmd> flow list 0\n \n- check the rule not exists.\n+ check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_VLAN_IPV4_SCTP_PAY\n-=================================\n+Subcase 8: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_VLAN_IPV4_SCTP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4674,51 +3651,48 @@ Test case: MAC_VLAN_IPV4_SCTP_PAY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_VLAN_IPV4_SCTP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_VLAN_IPV4_SCTP_PAY packet::\n+ * MAC_PPPOE_IPV6_TCP_PAY packet::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/SCTP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [VLAN ID], send packets::\n+ change the fields [Source IP][Source Port], send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/SCTP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:99\", dst=\"00:11:22:33:44:53\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.3\", dst=\"192.168.1.5\")/SCTP(sport=19,dport=99)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are the same as as the first packet.\n-\n-4. send packets mismatched the pattern::\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/SCTP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ check the hash values are the same as the first packet.\n \n- check the hash values of the packets not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n testpmd> flow destroy 0 rule 0\n testpmd> flow list 0\n \n- check the rule not exists.\n+ check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_VLAN_IPV6_PAY\n-============================\n+Subcase 9: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY\n+---------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_VLAN_IPV6_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4730,50 +3704,48 @@ Test case: MAC_VLAN_IPV6_PAY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_VLAN_IPV6_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_VLAN_IPV6_PAY packet::\n+ * MAC_PPPOE_IPV6_TCP_PAY packet::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [VLAN ID], send packets::\n+ change the fields [Source IP][Dest Port], send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:99\", dst=\"00:11:22:33:44:53\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"y\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values are the same as the first packet.\n-\n-4. send packets mismatched the pattern::\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ check the hash values are the same as the first packet.\n \n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n testpmd> flow destroy 0 rule 0\n testpmd> flow list 0\n \n- check the rule not exists.\n+ check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_VLAN_IPV6_UDP_PAY\n-================================\n+Subcase 10: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY\n+----------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_VLAN_IPV6_UDP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4785,51 +3757,48 @@ Test case: MAC_VLAN_IPV6_UDP_PAY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_VLAN_IPV6_UDP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_SRC_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_VLAN_IPV6_UDP_PAY packet::\n+ * MAC_PPPOE_IPV6_TCP_PAY packet::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [VLAN ID], send packets::\n+ change the fields [Dest IP][Source Port], send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:99\", dst=\"00:11:22:33:44:53\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=23,dport=99)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern::\n-\n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n testpmd> flow destroy 0 rule 0\n testpmd> flow list 0\n \n- check the rule not exists.\n+ check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_VLAN_IPV6_TCP_PAY\n-================================\n+Subcase 11: MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY\n+----------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_VLAN_IPV6_TCP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n \n- testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n \n get the message::\n \n@@ -4841,51 +3810,48 @@ Test case: MAC_VLAN_IPV6_TCP_PAY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_VLAN_IPV6_TCP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY_L3_DST_ONLY_L4_DST_ONLY::\n \n- testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_VLAN_IPV6_TCP_PAY packet::\n+ * MAC_PPPOE_IPV6_TCP_PAY packet::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [VLAN ID], send packets::\n+ change the fields [Dest IP][Dest Port], send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:99\", dst=\"00:11:22:33:44:53\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=19,dport=99)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern::\n-\n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n testpmd> flow destroy 0 rule 0\n testpmd> flow list 0\n \n- check the rule not exists.\n+ check the rule not exists in the list.\n send the matched packets, check the hash values of the packets are not exist.\n \n-Test case: MAC_VLAN_IPV6_SCTP_PAY\n-=================================\n+Subcase 12: MAC_PPPOE_IPV6_TCP_PAY_L3_SRC_ONLY_L3_DST_ONLY_L4_SRC_ONLY_L4_DST_ONLY\n+----------------------------------------------------------------------------------\n \n-1. validate a rule for RSS type of MAC_VLAN_IPV6_SCTP_PAY::\n+1. validate a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY::\n \n- testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow validate 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end\n \n get the message::\n \n@@ -4897,44 +3863,43 @@ Test case: MAC_VLAN_IPV6_SCTP_PAY\n \n check the rule not exists in the list.\n \n-2. create a rule for RSS type of MAC_VLAN_IPV6_SCTP_PAY::\n+2. create a rule for RSS type of MAC_PPPOE_IPV6_TCP_PAY::\n \n- testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types c-vlan end key_len 0 queues end / end\n+ testpmd> flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end\n testpmd> flow list 0\n \n check the rule exists in the list.\n \n 3. send matched packets\n \n- * MAC_VLAN_IPV6_SCTP_PAY packet::\n+ * MAC_PPPOE_IPV6_TCP_PAY packet::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/SCTP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n- change the field [VLAN ID], send packets::\n+ change the fields [Source IP][Dest IP][Source Port][Dest Port], send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/SCTP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=19,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"10:22:33:44:55:66\")/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/TCP(sport=19,dport=99)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are different from the first packet.\n change other fields, send packets::\n \n- sendp([Ether(src=\"10:22:33:44:55:99\", dst=\"00:11:22:33:44:53\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/SCTP(sport=25,dport=99)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"10:22:33:44:55:99\")/PPPoE(sessionid=7)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n \n check the hash values are the same as the first packet.\n \n-4. send packets mismatched the pattern::\n-\n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/SCTP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n- sendp([Ether(src=\"10:22:33:44:55:66\", dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\n-\n- check the hash values not exist.\n+4. send packets mismatched the pattern, check the hash values not exist.\n \n 5. destroy the rule::\n \n testpmd> flow destroy 0 rule 0\n testpmd> flow list 0\n \n- check the rule not exists.\n- send the matched packets, check the hash values the packets are not exist.\n+ check the rule not exists in the list.\n+ send the matched packets, check the hash values of the packets are not exist.\n \n Test case: MAC_VLAN_PPPOE_PAY (not supported in 20.08)\n ======================================================\n@@ -6017,161 +4982,3 @@ Subcase 4: two rules, scope larger created first, and the smaller one created la\n \n send a MAC_PPPOE_IPV4_UDP_PAY packet, check the hash values not exists.\n \n-Test case: negative cases\n-=========================\n-\n-Subcase 1: wrong hash input set\n--------------------------------\n-\n-1. validate a rule with wrong input set::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end\n-\n- get the error message::\n-\n- Invalid input set: Invalid argument\n-\n- create a rule with wrong hash input set::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end\n-\n- Failed to create flow, report error message::\n-\n- Invalid input set: Invalid argument\n-\n-2. validate a rule with wrong hash type::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n-\n- get the error message::\n-\n- Invalid input set: Invalid argument\n-\n- create a rule with wrong hash type::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n-\n- Failed to create flow, report error message::\n-\n- Invalid input set: Invalid argument\n-\n-3. validate a rule with wrong symmetric hash input set::\n-\n- testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only end key_len 0 queues end / end\n-\n- get the error message::\n-\n- Invalid input set: Invalid argument\n-\n- create a rule with wrong symmetric hash input set::\n-\n- testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only end key_len 0 queues end / end\n-\n- Failed to create flow, report error message::\n-\n- Invalid input set: Invalid argument\n-\n-4. check the rule list::\n-\n- testpmd> flow list 0\n-\n- there is no listed.\n-\n-Subcase 2: void action\n-----------------------\n-\n-1. validate a rule with void action::\n-\n- testpmd> flow validate 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end\n-\n- get the error message::\n-\n- NULL action.: Invalid argument\n-\n- create a rule with void action::\n-\n- testpmd> flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end\n-\n- Failed to create flow, report message::\n-\n- NULL action.: Invalid argument\n-\n-2. check the rule list::\n-\n- testpmd> flow list 0\n-\n- there is no rule listed.\n-\n-Subcase 3: delete a non-existing rule\n--------------------------------------\n-\n-1. show the rule list of port 0::\n-\n- testpmd> flow list 0\n-\n- There is no rule listed.\n-\n-2. destroy rule 0 of port 0::\n-\n- testpmd> flow destroy 0 rule 0\n-\n- There is no error message reported.\n-\n-3. flush rules of port 0::\n-\n- testpmd> flow flush 0\n-\n- There is no error message reported.\n-\n-Subcase 4: unsupported pattern with OS default package\n-------------------------------------------------------\n-\n-1. load os default package and launch testpmd as step 3-5 in Prerequisites.\n-\n-2. validate unsupported patterns in OS default package::\n-\n- testpmd> flow validate 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end\n- testpmd> flow validate 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end\n- testpmd> flow validate 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end\n- testpmd> flow validate 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end\n-\n- get the error message::\n-\n- Invalid input pattern: Invalid argument\n-\n-3. create unsupported patterns in OS default package::\n-\n- testpmd> flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end\n- testpmd> flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end\n- testpmd> flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end\n- testpmd> flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end\n-\n-4. check the rule list::\n-\n- testpmd> flow list 0\n-\n- there is no rule listed.\n-\n-Subcase 5: invalid port\n------------------------\n-\n-1. create a rule with invalid port::\n-\n- testpmd> flow create 1 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end\n-\n- Failed to create flow, report message::\n-\n- No such device: No such device\n-\n-2. check the rule list on port 0::\n-\n- testpmd> flow list 0\n-\n- there is no rule listed.\n- check on port 1::\n-\n- testpmd> flow list 1\n-\n- get the error message::\n-\n- Invalid port 1\n", "prefixes": [ "v2" ] }{ "id": 89816, "url": "