Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/114211/?format=api
https://patches.dpdk.org/api/patches/114211/?format=api", "web_url": "https://patches.dpdk.org/project/dts/patch/20220725052137.25801-3-hailinx.xu@intel.com/", "project": { "id": 3, "url": "https://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": "<20220725052137.25801-3-hailinx.xu@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/20220725052137.25801-3-hailinx.xu@intel.com", "date": "2022-07-25T05:21:37", "name": "[v1,2/2] tests/ice_fdir: support ipv6 next protocol id", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "6f76f6f1cb8843122a9a7066d051d1d5ac28e27f", "submitter": { "id": 1704, "url": "https://patches.dpdk.org/api/people/1704/?format=api", "name": "hailinx", "email": "hailinx.xu@intel.com" }, "delegate": null, "mbox": "https://patches.dpdk.org/project/dts/patch/20220725052137.25801-3-hailinx.xu@intel.com/mbox/", "series": [ { "id": 24078, "url": "https://patches.dpdk.org/api/series/24078/?format=api", "web_url": "https://patches.dpdk.org/project/dts/list/?series=24078", "date": "2022-07-25T05:21:35", "name": "ice support ipv6 next protocol id", "version": 1, "mbox": "https://patches.dpdk.org/series/24078/mbox/" } ], "comments": "https://patches.dpdk.org/api/patches/114211/comments/", "check": "fail", "checks": "https://patches.dpdk.org/api/patches/114211/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 A0901A00C5;\n\tTue, 26 Jul 2022 07:23:52 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 5F49A42685;\n\tTue, 26 Jul 2022 07:23:52 +0200 (CEST)", "from mga17.intel.com (mga17.intel.com [192.55.52.151])\n by mails.dpdk.org (Postfix) with ESMTP id 018B640DDD\n for <dts@dpdk.org>; Tue, 26 Jul 2022 07:23:50 +0200 (CEST)", "from orsmga003.jf.intel.com ([10.7.209.27])\n by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 25 Jul 2022 22:23:40 -0700", "from unknown (HELO localhost.localdomain) ([10.239.252.63])\n by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 25 Jul 2022 22:23:38 -0700" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1658813031; x=1690349031;\n h=from:to:cc:subject:date:message-id:in-reply-to: references;\n bh=pfQUdduJIrS9wLE2JSPimJroAKoi9y3FohdnYmTK4OU=;\n b=NbNbHqTf7pUmEaNd4weN75ZW8aaxcW7LlNFZ72I1z8Kz7q+xf7UBmbDi\n K+stm6ESjUYY5c6di9eyy0JMz8owNtl7hE8bocHr/vUyicYxVE9nc+psD\n t8TLZD3Ev8rbnsVDfDFu0Z4mapJhmHh2L08XCZdLuaAz/v90omKU9ZBbW\n 68+7Fxm4rzH5JkiLTQzZOkBh1VwYTbkD1JCNlW3Cbm567nX68h70uwLx6\n M7Uu5fIpr1WhdBnQytlidGeSmtBWDY3PWAlPmX+UxMakarCeoXwvFc3l0\n sxNja6QMuvCp7BJvsd05TZtZeC8IaBJRNnIEhTh55qedF4LnzZsfSNJYX g==;", "X-IronPort-AV": [ "E=McAfee;i=\"6400,9594,10419\"; a=\"268252523\"", "E=Sophos;i=\"5.93,193,1654585200\"; d=\"scan'208\";a=\"268252523\"", "E=Sophos;i=\"5.93,193,1654585200\"; d=\"scan'208\";a=\"550263359\"" ], "From": "hailinx xu <hailinx.xu@intel.com>", "To": "qi.fu@intel.com,\n\tdts@dpdk.org", "Cc": "hailinx xu <hailinx.xu@intel.com>", "Subject": "[dts][PATCH v1 2/2] tests/ice_fdir: support ipv6 next protocol id", "Date": "Mon, 25 Jul 2022 13:21:37 +0800", "Message-Id": "<20220725052137.25801-3-hailinx.xu@intel.com>", "X-Mailer": "git-send-email 2.17.1", "In-Reply-To": "<20220725052137.25801-1-hailinx.xu@intel.com>", "References": "<20220725052137.25801-1-hailinx.xu@intel.com>", "X-BeenThere": "dts@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "test suite reviews and discussions <dts.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dts/>", "List-Post": "<mailto:dts@dpdk.org>", "List-Help": "<mailto:dts-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>", "Errors-To": "dts-bounces@dpdk.org" }, "content": "add ice support ipv6 next protocol id test cases\n\n---\n tests/TestSuite_ice_fdir.py | 331 ++++++++++++++++++++++++++++++++++++\n 1 file changed, 331 insertions(+)", "diff": "diff --git a/tests/TestSuite_ice_fdir.py b/tests/TestSuite_ice_fdir.py\nindex 26f32b29..a6e9c9c3 100644\n--- a/tests/TestSuite_ice_fdir.py\n+++ b/tests/TestSuite_ice_fdir.py\n@@ -377,6 +377,83 @@ MAC_IPV6_NAT_T_ESP = {\n ],\n }\n \n+# 22.07 new feature\n+MAC_IPV6_PROTOCOL = {\n+ \"match\": [\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6(nh=123)/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrDestOpt(nh=123)/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrRouting(nh=123)/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrHopByHop(nh=123)/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrSegmentRouting(nh=123)/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=123)/Raw('x'*40)\",\n+ ],\n+ \"unmatched\": [\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6(nh=111)/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/UDP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/TCP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/SCTP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrFragment(nh=123)/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrRouting()/IPv6ExtHdrRouting(nh=111)/Raw('x'*40)\",\n+ ],\n+}\n+\n+MAC_IPV6_PROTOCOL_TCP = {\n+ \"match\": [\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6(nh=6)/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6(nh=6)/TCP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrDestOpt(nh=6)/TCP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrRouting(nh=6)/TCP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrHopByHop(nh=6)/TCP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrSegmentRouting(nh=6)/TCP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=6)/TCP()/Raw('x'*40)\",\n+ ],\n+ \"unmatched\": [\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6(nh=17)/TCP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/UDP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/SCTP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrFragment(nh=6)/TCP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrRouting()/IPv6ExtHdrRouting(nh=111)/TCP()/Raw('x'*40)\",\n+ ],\n+}\n+\n+MAC_IPV6_PROTOCOL_UDP = {\n+ \"match\": [\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6(nh=17)/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/UDP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrDestOpt(nh=17)/UDP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrRouting(nh=17)/UDP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrHopByHop(nh=17)/UDP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrSegmentRouting(nh=17)/UDP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=17)/UDP()/Raw('x'*40)\",\n+ ],\n+ \"unmatched\": [\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6(nh=6)/UDP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/TCP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/SCTP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrFragment(nh=6)/UDP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrRouting()/IPv6ExtHdrRouting(nh=111)/UDP()/Raw('x'*40)\",\n+ ],\n+}\n+\n+MAC_IPV6_PROTOCOL_SCTP = {\n+ \"match\": [\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6(nh=132)/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/SCTP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrDestOpt(nh=132)/SCTP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrRouting(nh=132)/SCTP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrHopByHop(nh=132)/SCTP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrSegmentRouting(nh=132)/SCTP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=132)/SCTP()/Raw('x'*40)\",\n+ ],\n+ \"unmatched\": [\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6(nh=6)/SCTP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/UDP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/TCP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrFragment(nh=6)/SCTP()/Raw('x'*40)\",\n+ \"Ether(dst='00:11:22:33:44:55')/IPv6()/IPv6ExtHdrRouting()/IPv6ExtHdrRouting(nh=111)/SCTP()/Raw('x'*40)\",\n+ ],\n+}\n+\n tv_mac_ipv4_pay_queue_index = {\n \"name\": \"test_mac_ipv4_pay_queue_index\",\n \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark / end\",\n@@ -2682,6 +2759,235 @@ vectors_mac_ipv6_nat_t_esp = [\n tv_mac_ipv6_nat_t_esp_mark,\n ]\n \n+# 22.07 new feature\n+tv_mac_ipv6_protocol_queue_index = {\n+ \"name\": \"test_mac_ipv6_protocol_queue_index\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 123 / end actions queue index 1 / mark / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"queue\": 1, \"mark_id\": 0},\n+}\n+\n+tv_mac_ipv6_protocol_rss_queues = {\n+ \"name\": \"test_mac_ipv6_protocol_rss_queues\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 123 / end actions rss queues 2 3 end / mark id 1 / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"queue\": [2, 3], \"mark_id\": 1},\n+}\n+\n+tv_mac_ipv6_protocol_passthru = {\n+ \"name\": \"test_mac_ipv6_protocol_passthru\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 123 / end actions passthru / mark / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"rss\": True, \"mark_id\": 0},\n+}\n+\n+tv_mac_ipv6_protocol_drop = {\n+ \"name\": \"test_mac_ipv6_protocol_drop\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 123 / end actions drop / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"drop\": True},\n+}\n+\n+tv_mac_ipv6_protocol_mark_rss = {\n+ \"name\": \"test_mac_ipv6_protocol_mark_rss\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 123 / end actions mark / rss / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"mark_id\": 0, \"rss\": True},\n+}\n+\n+tv_mac_ipv6_protocol_mark = {\n+ \"name\": \"test_mac_ipv6_protocol_mark\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 123 / end actions mark / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"mark_id\": 0, \"rss\": True},\n+}\n+\n+vectors_mac_ipv6_protocol = [\n+ tv_mac_ipv6_protocol_queue_index,\n+ tv_mac_ipv6_protocol_rss_queues,\n+ tv_mac_ipv6_protocol_passthru,\n+ tv_mac_ipv6_protocol_drop,\n+ tv_mac_ipv6_protocol_mark_rss,\n+ tv_mac_ipv6_protocol_mark,\n+]\n+\n+tv_mac_ipv6_protocol_tcp_queue_index = {\n+ \"name\": \"test_mac_ipv6_protocol_tcp_queue_index\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 6 / tcp / end actions queue index 3 / mark / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_TCP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"queue\": 3, \"mark_id\": 0},\n+}\n+\n+tv_mac_ipv6_protocol_tcp_rss_queues = {\n+ \"name\": \"test_mac_ipv6_protocol_tcp_rss_queues\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 6 / tcp / end actions rss queues 5 6 end / mark id 1 / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_TCP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"queue\": [5, 6], \"mark_id\": 1},\n+}\n+\n+tv_mac_ipv6_protocol_tcp_passthru = {\n+ \"name\": \"test_mac_ipv6_protocol_tcp_passthru\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 6 / tcp / end actions passthru / mark / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_TCP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"rss\": True, \"mark_id\": 0},\n+}\n+\n+tv_mac_ipv6_protocol_tcp_drop = {\n+ \"name\": \"test_mac_ipv6_protocol_tcp_drop\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 6 / tcp / end actions drop / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_TCP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"drop\": True},\n+}\n+\n+tv_mac_ipv6_protocol_tcp_mark_rss = {\n+ \"name\": \"test_mac_ipv6_protocol_tcp_mark_rss\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 6 / tcp / end actions mark / rss / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_TCP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"mark_id\": 0, \"rss\": True},\n+}\n+\n+tv_mac_ipv6_protocol_tcp_mark = {\n+ \"name\": \"test_mac_ipv6_protocol_tcp_mark\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 6 / tcp / end actions mark / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_TCP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"mark_id\": 0, \"rss\": True},\n+}\n+\n+vectors_mac_ipv6_protocol_tcp = [\n+ tv_mac_ipv6_protocol_tcp_queue_index,\n+ tv_mac_ipv6_protocol_tcp_rss_queues,\n+ tv_mac_ipv6_protocol_tcp_passthru,\n+ tv_mac_ipv6_protocol_tcp_drop,\n+ tv_mac_ipv6_protocol_tcp_mark_rss,\n+ tv_mac_ipv6_protocol_tcp_mark,\n+]\n+\n+tv_mac_ipv6_protocol_udp_queue_index = {\n+ \"name\": \"test_mac_ipv6_protocol_udp_queue_index\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 17 / udp / end actions queue index 3 / mark / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_UDP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"queue\": 3, \"mark_id\": 0},\n+}\n+\n+tv_mac_ipv6_protocol_udp_rss_queues = {\n+ \"name\": \"test_mac_ipv6_protocol_udp_rss_queues\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 17 / udp / end actions rss queues 7 8 end / mark id 1 / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_UDP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"queue\": [7, 8], \"mark_id\": 1},\n+}\n+\n+tv_mac_ipv6_protocol_udp_passthru = {\n+ \"name\": \"test_mac_ipv6_protocol_udp_passthru\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 17 / udp / end actions passthru / mark / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_UDP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"rss\": True, \"mark_id\": 0},\n+}\n+\n+tv_mac_ipv6_protocol_udp_drop = {\n+ \"name\": \"test_mac_ipv6_protocol_udp_drop\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 17 / udp / end actions drop / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_UDP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"drop\": True},\n+}\n+\n+tv_mac_ipv6_protocol_udp_mark_rss = {\n+ \"name\": \"test_mac_ipv6_protocol_udp_mark_rss\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 17 / udp / end actions mark / rss / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_UDP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"mark_id\": 0, \"rss\": True},\n+}\n+\n+tv_mac_ipv6_protocol_udp_mark = {\n+ \"name\": \"test_mac_ipv6_protocol_udp_mark\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 17 / udp / end actions mark / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_UDP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"mark_id\": 0, \"rss\": True},\n+}\n+\n+vectors_mac_ipv6_protocol_udp = [\n+ tv_mac_ipv6_protocol_udp_queue_index,\n+ tv_mac_ipv6_protocol_udp_rss_queues,\n+ tv_mac_ipv6_protocol_udp_passthru,\n+ tv_mac_ipv6_protocol_udp_drop,\n+ tv_mac_ipv6_protocol_udp_mark_rss,\n+ tv_mac_ipv6_protocol_udp_mark,\n+]\n+\n+tv_mac_ipv6_protocol_sctp_queue_index = {\n+ \"name\": \"test_mac_ipv6_protocol_sctp_queue_index\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 132 / sctp / end actions queue index 5 / mark id 3 / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_SCTP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"queue\": 5, \"mark_id\": 3},\n+}\n+\n+tv_mac_ipv6_protocol_sctp_rss_queues = {\n+ \"name\": \"test_mac_ipv6_protocol_sctp_rss_queues\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 132 / sctp / end actions rss queues 1 2 end / mark id 1 / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_SCTP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"queue\": [1, 2], \"mark_id\": 1},\n+}\n+\n+tv_mac_ipv6_protocol_sctp_passthru = {\n+ \"name\": \"test_mac_ipv6_protocol_sctp_passthru\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 132 / sctp / end actions passthru / mark id 4 / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_SCTP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"rss\": True, \"mark_id\": 4},\n+}\n+\n+tv_mac_ipv6_protocol_sctp_drop = {\n+ \"name\": \"test_mac_ipv6_protocol_sctp_drop\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 132 / sctp / end actions drop / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_SCTP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"drop\": True},\n+}\n+\n+tv_mac_ipv6_protocol_sctp_mark_rss = {\n+ \"name\": \"test_mac_ipv6_protocol_sctp_mark_rss\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 132 / sctp / end actions mark / rss / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_SCTP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"mark_id\": 0, \"rss\": True},\n+}\n+\n+tv_mac_ipv6_protocol_sctp_mark = {\n+ \"name\": \"test_mac_ipv6_protocol_sctp_mark\",\n+ \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 proto is 132 / sctp / end actions mark / end\",\n+ \"scapy_str\": MAC_IPV6_PROTOCOL_SCTP,\n+ \"check_func\": rfc.check_mark,\n+ \"check_param\": {\"port_id\": 0, \"mark_id\": 0, \"rss\": True},\n+}\n+\n+vectors_mac_ipv6_protocol_sctp = [\n+ tv_mac_ipv6_protocol_sctp_queue_index,\n+ tv_mac_ipv6_protocol_sctp_rss_queues,\n+ tv_mac_ipv6_protocol_sctp_passthru,\n+ tv_mac_ipv6_protocol_sctp_drop,\n+ tv_mac_ipv6_protocol_sctp_mark_rss,\n+ tv_mac_ipv6_protocol_sctp_mark,\n+]\n+\n \n class TestICEFdir(TestCase):\n def query_count(self, hits_set, hits, port_id=0, rule_id=0):\n@@ -4169,6 +4475,31 @@ class TestICEFdir(TestCase):\n )\n self.check_fdir_rule(stats=True)\n \n+ # 22.07 new feature\n+ def test_ipv6_protocal(self):\n+ self._rte_flow_validate(vectors_mac_ipv6_protocol)\n+\n+ def test_ipv6_protocal_tcp(self):\n+ self._rte_flow_validate(vectors_mac_ipv6_protocol_tcp)\n+\n+ def test_ipv6_protocal_udp(self):\n+ self._rte_flow_validate(vectors_mac_ipv6_protocol_udp)\n+\n+ def test_ipv6_protocal_sctp(self):\n+ self._rte_flow_validate(vectors_mac_ipv6_protocol_sctp)\n+\n+ def test_mac_ipv6_protocol_exclusive(self):\n+ rule = \"flow create 0 priority 0 ingress pattern eth / ipv6 proto is 123 / end actions queue index 1 / mark / end\"\n+ self.create_fdir_rule(rule, check_stats=True)\n+ self.pmd_output.execute_cmd(\"flow flush 0\")\n+ rule1 = \"flow create 0 ingress pattern eth / ipv6 proto is 123 / end actions queue index 1 / mark / end\"\n+ rule2 = \"flow create 0 ingress pattern eth / ipv6 proto is 123 / end actions rss queues 2 3 end / mark / end\"\n+ self.create_fdir_rule(rule1, check_stats=True)\n+ out = self.pmd_output.execute_cmd(rule2)\n+ self.verify(\n+ \"Rule already exists!: File exists\" in out, \"created rule successfully!!!\"\n+ )\n+\n def tear_down(self):\n try:\n # destroy all flow rule on port 0\n", "prefixes": [ "v1", "2/2" ] }{ "id": 114211, "url": "