From patchwork Wed Jul 27 02:20:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Weiyuan Li X-Patchwork-Id: 114247 Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 6BA47A00C4; Wed, 27 Jul 2022 04:21:28 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BA14E40E03; Wed, 27 Jul 2022 04:21:27 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id 9EBC640A89 for ; Wed, 27 Jul 2022 04:21:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658888485; x=1690424485; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=WxIiOE3TR0y8tBrhtzyNc7HVb2EcegXsS6KMRz6qnNk=; b=hHf94a7D3Aoj7a1wRCiysYegJbFrRlMfiVViFHrgOqRdt9/BVb+o3ur8 f0NOoLXZ5oJOaw3ass0Pw77Elca2AdkeXy+Zfkon2jsgDc7/gXshjjh6q HAc85AwcaKgVQ3mxxrAFyyXwDpFbKYSWOQx71BCSUHkDniStV6DT6OsNw YPAMdjTRIwHeWTiZu8Ks9m4mv7RoTGzd70UqnqtszkzjCRuCbKLM116vc 4yg6/uWw0qXFgqTuhs2XmTgBuimWC7zA4uL9EifN74lhtUMccem3lWZ2k klHj+z1XcOuvyGONDgw682dvzzmxfQqYGqXGTGkI/s1HJU153vQzUfV9v Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10420"; a="289317525" X-IronPort-AV: E=Sophos;i="5.93,194,1654585200"; d="scan'208";a="289317525" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2022 19:21:24 -0700 X-IronPort-AV: E=Sophos;i="5.93,194,1654585200"; d="scan'208";a="628186397" Received: from unknown (HELO localhost.localdomain) ([10.239.252.248]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2022 19:21:22 -0700 From: Weiyuan Li To: dts@dpdk.org, yuan.peng@intel.com Cc: Weiyuan Li Subject: [dts][PATCH V1 1/4] test_plans/ice_advanced_iavf_rss: add new testplan Date: Wed, 27 Jul 2022 10:20:50 +0800 Message-Id: <20220727022053.11076-1-weiyuanx.li@intel.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Add DPDK22.07 new feature testplan. Signed-off-by: Weiyuan Li --- .../ice_advanced_iavf_rss_test_plan.rst | 448 ++++++++++++++++++ 1 file changed, 448 insertions(+) diff --git a/test_plans/ice_advanced_iavf_rss_test_plan.rst b/test_plans/ice_advanced_iavf_rss_test_plan.rst index 2400f01a..599b9dab 100644 --- a/test_plans/ice_advanced_iavf_rss_test_plan.rst +++ b/test_plans/ice_advanced_iavf_rss_test_plan.rst @@ -332,16 +332,19 @@ Default parameters [Src MAC]: 68:05:CA:BB:26:E0 [Dest MAC]: 00:11:22:33:44:55 + [Multicast Dest MAC]: 11:22:33:44:55:66 IPv4:: [Dest IP]: 192.168.0.1 [Source IP]: 192.168.0.2 + [Multicast Dest IPv4]: 224.0.0.1 IPv6:: [Source IPv6]: ABAB:910B:6666:3457:8295:3333:1800:2929 [Dest IPv6]: CDCD:910A:2222:5498:8475:1111:3900:2020 + [Multicast Dest IPv6]: ff01::2 UDP/TCP/SCTP:: @@ -892,6 +895,228 @@ Subcase: MAC_IPV4_SCTP_IPV4 Subcase: MAC_IPV4_SCTP_ALL -------------------------- +Test case: MAC_IPV4 multicast +============================= +Enable vf-true-promisc-support flag to on before start testpmd:: + + ethtool --set-priv-flags ens25f0 vf-true-promisc-support on + +Enable VF port to trust on before start testpmd:: + + ip link set ens25f0 vf 0 trust on + +Enable all multicast mode in the testpmd:: + + testpmd> set allmulti all on + + +basic hit pattern packets are the same in this multicast test case: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.2")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV4_L2SRC +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/TCP(sport=19,dport=99)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV4_L2DST +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/TCP(sport=19,dport=99)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.5")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.5")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.5")/TCP(sport=19,dport=99)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV4_L2SRC_L2DST +----------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types eth end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/TCP(sport=23,dport=25)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV4_L3SRC +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV4_L3DST +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.1.2")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.1.2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.1.2")/TCP(sport=32,dport=33)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV4_ALL +--------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/("X"*480)],iface="enp134s0f0") + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="enp134s0f0") + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/("X"*480)],iface="enp134s0f0") + +ipv4-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv4-tcp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)],iface="enp134s0f0") Test case: MAC_IPV6 =================== @@ -1092,6 +1317,229 @@ ipv6-udp packets:: sendp([Ether(dst="00:11:22:33:44:55", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="enp134s0f0") +Test case: MAC_IPV6 multicast +============================= +Enable vf-true-promisc-support flag to on before start testpmd:: + + ethtool --set-priv-flags ens25f0 vf-true-promisc-support on + +Enable VF port to trust on before start testpmd:: + + ip link set ens25f0 vf 0 trust on + +Enable all multicast mode in the testpmd:: + + testpmd> set allmulti all on + + +basic hit pattern packets are the same in this test case, including unicast and multicast:: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV6_L2SRC +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/UDP(sport=25,dport=99)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV6_L2DST +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/UDP(sport=25,dport=99)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/UDP(sport=25,dport=99)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV6_L2SRC_L2DST +----------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / end actions rss types eth end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::25")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::25")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::25")/UDP(sport=25,dport=99)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV6_L3SRC +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/("X"*480)],iface="enp134s0f0") + + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::25")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::25")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/UDP(sport=32,dport=33)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV6_L3DST +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::25")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::25")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::25")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/UDP(sport=32,dport=33)/("X"*480)],iface="enp134s0f0") + +Subcase: MAC_IPV6_ALL +--------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::21")/("X"*480)],iface="enp134s0f0") + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::21")/ICMP()/("X"*480)],iface="enp134s0f0") + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::21")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0") + +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/("X"*480)],iface="enp134s0f0") + +ipv6-icmp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/ICMP()/("X"*480)],iface="enp134s0f0") + +ipv6-udp packets:: + + sendp([Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/UDP(sport=32,dport=33)/("X"*480)],iface="enp134s0f0") Test case: MAC_IPV6_64BIT_PREFIX ================================= From patchwork Wed Jul 27 02:20:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Weiyuan Li X-Patchwork-Id: 114248 Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 0583CA00C4; Wed, 27 Jul 2022 04:21:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EDDF640F19; Wed, 27 Jul 2022 04:21:47 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id 4610F40A89 for ; Wed, 27 Jul 2022 04:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658888504; x=1690424504; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pH105uXWxbNn2Q55xEkl4jtFR0OlOUKI81UsjoBy5zY=; b=MXsttYJldCOv/j5G0KAVFE9/IypevTXlzgOeFJ0+68yTSgcM8h+HD2bb 2ykrGrWRy95ugN8nqNE5ZjNrVfXiJqqsdxWkcDXbJ/El2pGXQdybwok9H GCv790/j7hG5XehXH4rruaJsnnXob9xaIr4R4Y/7Iuu82/L7dHpIGYP/a jPKkhIBbaMNxKj9S8PpepMB2q8jdfIHsYWefDk734Ks5P2v8pjty4x98R urQLrUfbZ1tWSndDAJsK8g8b4XtvIJolwOR4bD7s7OSuzUg8nvyefJ1WJ UOw+GmLQhsIBCVb42fljuObi9xkS2MX1sTpxKvrB2E3rL3lEz5fA7GjYt A==; X-IronPort-AV: E=McAfee;i="6400,9594,10420"; a="289317530" X-IronPort-AV: E=Sophos;i="5.93,194,1654585200"; d="scan'208";a="289317530" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2022 19:21:26 -0700 X-IronPort-AV: E=Sophos;i="5.93,194,1654585200"; d="scan'208";a="628186405" Received: from unknown (HELO localhost.localdomain) ([10.239.252.248]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2022 19:21:24 -0700 From: Weiyuan Li To: dts@dpdk.org, yuan.peng@intel.com Cc: Weiyuan Li Subject: [dts][PATCH V1 2/4] tests/ice_advanced_iavf_rss: add new test suite Date: Wed, 27 Jul 2022 10:20:51 +0800 Message-Id: <20220727022053.11076-2-weiyuanx.li@intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220727022053.11076-1-weiyuanx.li@intel.com> References: <20220727022053.11076-1-weiyuanx.li@intel.com> MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Add DPDK22.07 new feature test suite. Signed-off-by: Weiyuan Li --- tests/TestSuite_ice_advanced_iavf_rss.py | 654 +++++++++++++++++++++++ 1 file changed, 654 insertions(+) diff --git a/tests/TestSuite_ice_advanced_iavf_rss.py b/tests/TestSuite_ice_advanced_iavf_rss.py index e560c9e6..b4a7290b 100644 --- a/tests/TestSuite_ice_advanced_iavf_rss.py +++ b/tests/TestSuite_ice_advanced_iavf_rss.py @@ -80,6 +80,19 @@ mac_ipv6_toeplitz_basic_pkt = { # ], } +mac_ipv6_toeplitz_basic_multicast_pkt = { + "ipv6-nonfrag": [ + 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/("X"*480)', + ], + "ipv6-icmp": [ + 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/ICMP()/("X"*480)', + ], + "ipv6-udp": [ + 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)', + ], +} + + mac_ipv6_udp_toeplitz_basic_pkt = { "ipv6-udp": [ 'Ether(dst="%s", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)' @@ -161,6 +174,295 @@ mac_ipv4_l2_src = { ], } +mac_ipv4_toeplitz_basic_multicast_pkt = { + "ipv4-nonfrag": [ + 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.2")/("X"*480)', + ], + "ipv4-icmp": [ + 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + ], + "ipv4-tcp": [ + 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + ], +} + +# mac_ipv4 multicast +mac_ipv4_l2_src_multicast = { + "sub_casename": "mac_ipv4_l2_src_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-nonfrag"], + "action": {"save_hash": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/("X"*480)', + "action": {"check_hash_different": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/("X"*480)', + "action": {"check_hash_same": "ipv4-nonfrag"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-icmp"], + "action": {"save_hash": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/("X"*480)', + "action": {"check_hash_same": "ipv4-icmp"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-tcp"], + "action": {"save_hash": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/TCP(sport=19,dport=99)/("X"*480)', + "action": {"check_hash_same": "ipv4-tcp"}, + }, + ], +} + +mac_ipv4_l2_dst_multicast = { + "sub_casename": "mac_ipv4_l2_dst_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-nonfrag"], + "action": {"save_hash": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/("X"*480)', + "action": {"check_hash_different": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.5")/("X"*480)', + "action": {"check_hash_same": "ipv4-nonfrag"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-icmp"], + "action": {"save_hash": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.5")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv4-icmp"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-tcp"], + "action": {"save_hash": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/TCP(sport=19,dport=99)/("X"*480)', + "action": {"check_hash_different": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.5")/TCP(sport=19,dport=99)/("X"*480)', + "action": {"check_hash_same": "ipv4-tcp"}, + }, + ], +} + +mac_ipv4_l2src_l2dst_multicast = { + "sub_casename": "mac_ipv4_l2src_l2dst_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv4 / end actions rss types eth end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-nonfrag"], + "action": {"save_hash": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/("X"*480)', + "action": {"check_hash_different": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/("X"*480)', + "action": {"check_hash_same": "ipv4-nonfrag"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-icmp"], + "action": {"save_hash": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv4-icmp"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-tcp"], + "action": {"save_hash": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.0.5")/TCP(sport=23,dport=25)/("X"*480)', + "action": {"check_hash_same": "ipv4-tcp"}, + }, + ], +} + +mac_ipv4_l3_src_multicast = { + "sub_casename": "mac_ipv4_l3_src_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-nonfrag"], + "action": {"save_hash": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/("X"*480)', + "action": {"check_hash_different": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/("X"*480)', + "action": {"check_hash_same": "ipv4-nonfrag"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-icmp"], + "action": {"save_hash": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv4-icmp"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-tcp"], + "action": {"save_hash": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.2", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)', + "action": {"check_hash_same": "ipv4-tcp"}, + }, + ], +} + +mac_ipv4_l3_dst_multicast = { + "sub_casename": "mac_ipv4_l3_dst_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-nonfrag"], + "action": {"save_hash": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/("X"*480)', + "action": {"check_hash_different": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.1.2")/("X"*480)', + "action": {"check_hash_same": "ipv4-nonfrag"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-icmp"], + "action": {"save_hash": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.1.2")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv4-icmp"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-tcp"], + "action": {"save_hash": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.1.2")/TCP(sport=32,dport=33)/("X"*480)', + "action": {"check_hash_same": "ipv4-tcp"}, + }, + ], +} + +mac_ipv4_all_multicast = { + "sub_casename": "mac_ipv4_all_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-nonfrag"], + "action": {"save_hash": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/("X"*480)', + "action": {"check_hash_different": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/("X"*480)', + "action": {"check_hash_different": "ipv4-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/("X"*480)', + "action": {"check_hash_same": "ipv4-nonfrag"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-icmp"], + "action": {"save_hash": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv4-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv4-icmp"}, + }, + { + "send_packet": mac_ipv4_toeplitz_basic_multicast_pkt["ipv4-tcp"], + "action": {"save_hash": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.2.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IP(dst="224.0.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv4-tcp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IP(dst="224.0.0.1", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)', + "action": {"check_hash_same": "ipv4-tcp"}, + }, + ], +} + mac_ipv4_l2_dst = { "sub_casename": "mac_ipv4_l2_dst", "port_id": 0, @@ -1853,6 +2155,283 @@ mac_ipv4_sctp_chksum = [ for element in mac_ipv4_udp_chksum ] +# mac_ipv6 multicast +mac_ipv6_l2_src_multicast = { + "sub_casename": "mac_ipv6_l2_src_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-nonfrag"], + "action": {"save_hash": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/("X"*480)', + "action": {"check_hash_different": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/("X"*480)', + "action": {"check_hash_same": "ipv6-nonfrag"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-icmp"], + "action": {"save_hash": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv6-icmp"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-udp"], + "action": {"save_hash": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/UDP(sport=25,dport=99)/("X"*480)', + "action": {"check_hash_same": "ipv6-udp"}, + }, + ], +} + +mac_ipv6_l2_dst_multicast = { + "sub_casename": "mac_ipv6_l2_dst_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-nonfrag"], + "action": {"save_hash": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/("X"*480)', + "action": {"check_hash_different": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/("X"*480)', + "action": {"check_hash_same": "ipv6-nonfrag"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-icmp"], + "action": {"save_hash": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv6-icmp"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-udp"], + "action": {"save_hash": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:67", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/UDP(sport=25,dport=99)/("X"*480)', + "action": {"check_hash_different": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::23")/UDP(sport=25,dport=99)/("X"*480)', + "action": {"check_hash_same": "ipv6-udp"}, + }, + ], +} + +mac_ipv6_l2src_l2dst_multicast = { + "sub_casename": "mac_ipv6_l2src_l2dst_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types eth end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-nonfrag"], + "action": {"save_hash": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/("X"*480)', + "action": {"check_hash_different": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::25")/("X"*480)', + "action": {"check_hash_same": "ipv6-nonfrag"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-icmp"], + "action": {"save_hash": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::25")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv6-icmp"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-udp"], + "action": {"save_hash": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="ff01::25")/UDP(sport=25,dport=99)/("X"*480)', + "action": {"check_hash_same": "ipv6-udp"}, + }, + ], +} + +mac_ipv6_l3_src_multicast = { + "sub_casename": "mac_ipv6_l3_src_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-nonfrag"], + "action": {"save_hash": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/("X"*480)', + "action": {"check_hash_different": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/("X"*480)', + "action": {"check_hash_same": "ipv6-nonfrag"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-icmp"], + "action": {"save_hash": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::25")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv6-icmp"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-udp"], + "action": {"save_hash": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::25")/UDP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/UDP(sport=32,dport=33)/("X"*480)', + "action": {"check_hash_same": "ipv6-udp"}, + }, + ], +} + +mac_ipv6_l3_dst_multicast = { + "sub_casename": "mac_ipv6_l3_dst_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-nonfrag"], + "action": {"save_hash": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::25")/("X"*480)', + "action": {"check_hash_different": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/("X"*480)', + "action": {"check_hash_same": "ipv6-nonfrag"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-icmp"], + "action": {"save_hash": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::25")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv6-icmp"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-udp"], + "action": {"save_hash": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::25")/UDP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/UDP(sport=32,dport=33)/("X"*480)', + "action": {"check_hash_same": "ipv6-udp"}, + }, + ], +} + +mac_ipv6_all_multicast = { + "sub_casename": "mac_ipv6_all_multicast", + "port_id": 0, + "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end", + "test": [ + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-nonfrag"], + "action": {"save_hash": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::21")/("X"*480)', + "action": {"check_hash_different": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/("X"*480)', + "action": {"check_hash_different": "ipv6-nonfrag"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/("X"*480)', + "action": {"check_hash_same": "ipv6-nonfrag"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-icmp"], + "action": {"save_hash": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::21")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/ICMP()/("X"*480)', + "action": {"check_hash_different": "ipv6-icmp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/ICMP()/("X"*480)', + "action": {"check_hash_same": "ipv6-icmp"}, + }, + { + "send_packet": mac_ipv6_toeplitz_basic_multicast_pkt["ipv6-udp"], + "action": {"save_hash": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::21")/UDP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)', + "action": {"check_hash_different": "ipv6-udp"}, + }, + { + "send_packet": 'Ether(dst="11:22:33:44:55:66", src="68:05:CA:BB:26:E1")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="ff01::2")/UDP(sport=32,dport=33)/("X"*480)', + "action": {"check_hash_same": "ipv6-udp"}, + }, + ], +} + # mac_ipv6 mac_ipv6_l2_src = { "sub_casename": "mac_ipv6_l2_src", @@ -3424,6 +4003,16 @@ mac_ipv4 = [ mac_ipv4_l3_dst, mac_ipv4_all, ] + +mac_ipv4_multicast = [ + mac_ipv4_l2_src_multicast, + mac_ipv4_l2_dst_multicast, + mac_ipv4_l2src_l2dst_multicast, + mac_ipv4_l3_src_multicast, + mac_ipv4_l3_dst_multicast, + mac_ipv4_all_multicast, +] + mac_ipv4_ipv4_chksum = [mac_ipv4_ipv4_chksum] mac_ipv4_udp = [ @@ -3480,6 +4069,15 @@ mac_ipv6 = [ mac_ipv6_all, ] +mac_ipv6_multicast = [ + mac_ipv6_l2_src_multicast, + mac_ipv6_l2_dst_multicast, + mac_ipv6_l2src_l2dst_multicast, + mac_ipv6_l3_src_multicast, + mac_ipv6_l3_dst_multicast, + mac_ipv6_all_multicast, +] + mac_ipv6_udp = [ mac_ipv6_udp_l2_src, mac_ipv6_udp_l2_dst, @@ -5785,6 +6383,31 @@ class AdvancedIavfRSSTest(TestCase): """ Run before each test case. """ + if self.running_case in ["test_mac_ipv4_multicast", "test_mac_ipv6_multicast"]: + self.flag = "vf-true-promisc-support" + self.dut.send_expect( + "ethtool --set-priv-flags %s %s on" + % (self.dut.ports_info[self.dut_ports[0]]["intf"], self.flag), + "# ", + ) + self.dut.send_expect( + "ethtool --show-priv-flags %s" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) + + out = self.dut.send_expect( + "ip link set %s vf 0 trust on" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) + if "RTNETLINK answers: Invalid argument" in out: + self.dut.send_expect( + "ip link set %s vf 0 trust on" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) + self.pkt = Packet() self.pmd_output = PmdOutput(self.dut) self.launch_testpmd() @@ -5836,12 +6459,16 @@ class AdvancedIavfRSSTest(TestCase): self.pmd_output.execute_cmd("port config all rss all") self.pmd_output.execute_cmd("set fwd rxonly") self.pmd_output.execute_cmd("set verbose 1") + self.pmd_output.execute_cmd("set allmulti all on") res = self.pmd_output.wait_link_status_up("all", timeout=15) self.verify(res is True, "there have port link is down") def test_mac_ipv4(self): self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4) + def test_mac_ipv4_multicast(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_multicast) + def test_mac_ipv4_udp(self): self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_udp) @@ -5854,6 +6481,9 @@ class AdvancedIavfRSSTest(TestCase): def test_mac_ipv6(self): self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6) + def test_mac_ipv6_multicast(self): + self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_multicast) + def test_mac_ipv6_udp(self): self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_udp) @@ -6631,6 +7261,30 @@ class AdvancedIavfRSSTest(TestCase): self.dut.send_command("clear port stats all", timeout=1) self.pmd_output.execute_cmd("stop") self.pmd_output.execute_cmd("quit", "#") + if self.running_case in ["test_mac_ipv4_multicast", "test_mac_ipv6_multicast"]: + self.flag = "vf-true-promisc-support" + self.dut.send_expect( + "ethtool --set-priv-flags %s %s off" + % (self.dut.ports_info[self.dut_ports[0]]["intf"], self.flag), + "# ", + ) + self.dut.send_expect( + "ethtool --show-priv-flags %s" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) + + out = self.dut.send_expect( + "ip link set %s vf 0 trust off" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) + if "RTNETLINK answers: Invalid argument" in out: + self.dut.send_expect( + "ip link set %s vf 0 trust off" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) def tear_down_all(self): self.dut.kill_all() From patchwork Wed Jul 27 02:20:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Weiyuan Li X-Patchwork-Id: 114249 Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 40E0BA00C5; Wed, 27 Jul 2022 04:21:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 29A014114A; Wed, 27 Jul 2022 04:21:48 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id 1599240A89 for ; Wed, 27 Jul 2022 04:21:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658888506; x=1690424506; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4NAA2hPritpaEt+ZOgiS9ywteJFFsObETBqrLaginQ4=; b=Ve0GqOpmTMn4s5+cQJxZnC4pgZl86sahYGnieUTzNHDy53yKHTth12VZ XDbc0h8GIB/JtZUQ05bqhioMZ+hK+hOv08TlnpRvuT3apmfjAP9MqdSxF djsdv3Ln3GiwlyxPJV1gG/YOzOTyrDOLKLEACE8wjh3EVpQFLqPMq1wQF /2Qs/cDDcL1dH9EvvkH0cu7/YM7hzWG60W4kZ/f5i0+BCtKLLHlydg6Lw 0SA1ju3Rpzkau7UmjHcXbU8M+v+LE7W4t+vWaa4rtSX9jkpGj/+kgk8zU wxRssOBYecNZgieUICq6UI0tn83kexw/HNATPnHNi+Q3smsYQc8bOofJm w==; X-IronPort-AV: E=McAfee;i="6400,9594,10420"; a="289317532" X-IronPort-AV: E=Sophos;i="5.93,194,1654585200"; d="scan'208";a="289317532" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2022 19:21:27 -0700 X-IronPort-AV: E=Sophos;i="5.93,194,1654585200"; d="scan'208";a="628186412" Received: from unknown (HELO localhost.localdomain) ([10.239.252.248]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2022 19:21:26 -0700 From: Weiyuan Li To: dts@dpdk.org, yuan.peng@intel.com Cc: Weiyuan Li Subject: [dts][PATCH V1 3/4] test_plans/ice_iavf_fdir: add new testplan Date: Wed, 27 Jul 2022 10:20:52 +0800 Message-Id: <20220727022053.11076-3-weiyuanx.li@intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220727022053.11076-1-weiyuanx.li@intel.com> References: <20220727022053.11076-1-weiyuanx.li@intel.com> MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Add DPDK22.07 new feature testplan. Signed-off-by: Weiyuan Li --- test_plans/ice_iavf_fdir_test_plan.rst | 319 +++++++++++++++++++++++++ 1 file changed, 319 insertions(+) diff --git a/test_plans/ice_iavf_fdir_test_plan.rst b/test_plans/ice_iavf_fdir_test_plan.rst index b485f899..b253e6b8 100644 --- a/test_plans/ice_iavf_fdir_test_plan.rst +++ b/test_plans/ice_iavf_fdir_test_plan.rst @@ -230,6 +230,7 @@ Default parameters VF00 MAC:: [Dest MAC]: 00:11:22:33:44:55 + [Multicast Dest MAC]: 11:22:33:44:55:66 VF01 MAC:: @@ -247,6 +248,7 @@ Default parameters [Source IP]: 192.168.0.20 [Dest IP]: 192.168.0.21 + [Multicast Dest IPv4]: 224.0.0.1 [IP protocol]: 255 [TTL]: 2 [DSCP]: 4 @@ -255,6 +257,7 @@ Default parameters [Source IPv6]: 2001::2 [Dest IPv6]: CDCD:910A:2222:5498:8475:1111:3900:2020 + [Multicast Dest IPv6]: ff01::2 [IP protocol]: 0 [TTL]: 2 [TC]: 1 @@ -297,6 +300,21 @@ Send packets sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=255, ttl=3, tos=4) / Raw('x' * 80)],iface="enp134s0f1") sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=255, ttl=2, tos=9) / Raw('x' * 80)],iface="enp134s0f1") +* MAC_IPV4_PAY multicast + + matched packets:: + + sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=4) / Raw('x' * 80)],iface="enp134s0f1") + sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=4)/UDP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1") + + mismatched packets:: + + sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.22",dst="224.0.0.1", proto=255, ttl=2, tos=4) / Raw('x' * 80)],iface="enp134s0f1") + sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.2", proto=255, ttl=2, tos=4) / Raw('x' * 80)],iface="enp134s0f1") + sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=1, ttl=2, tos=4) / Raw('x' * 80)],iface="enp134s0f1") + sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=3, tos=4) / Raw('x' * 80)],iface="enp134s0f1") + sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=9) / Raw('x' * 80)],iface="enp134s0f1") + * MAC_IPV4_UDP matched packets:: @@ -360,6 +378,21 @@ Send packets sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=0, tc=2, hlim=2)/("X"*480)], iface="enp134s0f1") sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=0, tc=1, hlim=5)/("X"*480)], iface="enp134s0f1") +* MAC_IPV6_PAY multicast + + matched packets:: + + sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)], iface="enp134s0f1") + sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f1") + + mismatched packets:: + + sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::1", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)], iface="enp134s0f1") + sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::1", nh=0, tc=1, hlim=2)/("X"*480)], iface="enp134s0f1") + sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=2, tc=1, hlim=2)/("X"*480)], iface="enp134s0f1") + sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=2, hlim=2)/("X"*480)], iface="enp134s0f1") + sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=5)/("X"*480)], iface="enp134s0f1") + * MAC_IPV6_UDP matched packets:: @@ -7260,3 +7293,289 @@ Subcase 6: MAC_IPV6_GRE_IPV6_UDP mark each subcase is the same as the subcase of Test case: MAC_IPV6_GRE_IPV6_TCP pattern, just only pattern is different, replace "tcp" with "udp" in all the subcases + +Test case: MAC_IPV4_PAY pattern multicast +========================================= +Enable vf-true-promisc-support flag to on before start testpmd:: + + ethtool --set-priv-flags ens25f0 vf-true-promisc-support on + +Enable VF port to trust on before start testpmd:: + + ip link set ens25f0 vf 0 trust on + +Enable all multicast mode in the testpmd:: + + testpmd> set allmulti all on + + +Subcase 1: MAC_IPV4_PAY queue index +----------------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark / end + +2. send multicast matched packets, check the packets are distributed to queue 1 without FDIR matched ID. + send multicast mismatched packets, check the packets are not distributed to queue 1 without FDIR matched ID. + +3. verify rules can be listed and destroyed:: + + testpmd> flow list 0 + + check the rule listed. + destroy the rule:: + + testpmd> flow destroy 0 rule 0 + +4. verify matched packets are not distributed to queue 1 without FDIR matched ID. + check there is no rule listed. + +Subcase 2: MAC_IPV4_PAY rss queues +---------------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / mark / end + +2. send multicast matched packets, check the packets are distributed to queue 2 or 3 without without FDIR matched ID. + send multicast mismatched packets, check the packets are not distributed to queue 2 or 3 without FDIR matched ID. + +3. repeat step 3 of subcase 1. + +4. verify matched packets are not distributed to queue 2 or 3 without FDIR matched ID. + check there is no rule listed. + +Subcase 3: MAC_IPV4_PAY passthru +-------------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions passthru / mark / end + +2. send multicast matched packets, check the packets are distributed by RSS without FDIR matched ID. + send multicast mismatched packets, check the packets are distributed by RSS without FDIR matched ID. + +3. repeat step 3 of subcase 1. + +4. verify matched packets are distributed to the same queue without FDIR matched ID=0x0. + check there is no rule listed. + +Subcase 4: MAC_IPV4_PAY drop +---------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions drop / mark / end + +2. send multicast matched packets, check the packets are dropped + send multicast mismatched packets, check the packets are not dropped. + +3. repeat step 3 of subcase 1. + +4. verify matched packets are not dropped. + check there is no rule listed. + +Subcase 5: MAC_IPV4_PAY mark+rss +-------------------------------- +Note: This combined action is mark with RSS which is without queues specified. + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions mark / rss / end + +2. send multicast matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0 + send multicast mismatched packets, check the packets are distributed by RSS without FDIR matched ID. + +3. repeat step 3 of subcase 1. + +4. verify matched packets are distributed to the same queue without FDIR matched ID. + check there is no rule listed. + +Subcase 6: MAC_IPV4_PAY mark +---------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions mark / end + +2. send multicast matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0. + send multicast mismatched packets, check the packets are distributed by RSS without FDIR matched ID. + +3. repeat step 3 of subcase 1. + +4. verify matched packets are distributed to the same queue without FDIR matched ID. + check there is no rule listed. + +Subcase 7: MAC_IPV4_PAY protocal +-------------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv4 dst is 224.0.0.1 proto is 1 / end actions queue index 1 / mark id 1 / end + flow create 0 ingress pattern eth / ipv4 dst is 224.0.0.1 proto is 17 / end actions passthru / mark id 3 / end + +2. send matched packets:: + + pkt1 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=1)/Raw('x' * 80) + pkt2 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.19",dst="224.0.0.1", proto=1)/Raw('x' * 80) + pkt3 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", ttl=2, tos=4)/UDP(sport=22,dport=23)/Raw('x' * 80) + pkt4 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=17)/UDP(sport=22,dport=23)/Raw('x' * 80) + pkt5 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=17, ttl=2, tos=4)/Raw('x' * 80) + pkt6 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", frag=1, proto=17, ttl=2, tos=4)/Raw('x' * 80) + + check the pkt1 and pkt2 are redirected to queue 1 with FDIR matched ID=0x1. + check the pkt3-pkt6 are distributed by RSS with FDIR matched ID=0x3. + send mismatched packets:: + + pkt7 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.2", proto=1)/Raw('x' * 80) + pkt8 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=6)/UDP(sport=22,dport=23)/Raw('x' * 80) + pkt9 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1")/TCP(sport=22,dport=23)/Raw('x' * 80) + pkt10 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", ttl=2, tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80) + + check the packets received have not FDIR matched ID. + +3. repeat step 3 of subcase 1. + +4. verify matched packets have not FDIR matched ID. + check there is no rule listed. + +Test case: MAC_IPV6_PAY pattern multicast +========================================= +Enable vf-true-promisc-support flag to on before start testpmd:: + + ethtool --set-priv-flags ens25f0 vf-true-promisc-support on + +Enable VF port to trust on before start testpmd:: + + ip link set ens25f0 vf 0 trust on + +Enable all multicast mode in the testpmd:: + + testpmd> set allmulti all on + + +Subcase 1: MAC_IPV6_PAY queue index +----------------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions queue index 15 / mark / end + +2. send multicast matched packets, check the packets is distributed to queue 15 with FDIR matched ID=0x0. + send multicast mismatched packets, check the packets are distributed by RSS without FDIR matched ID. + +3. verify rules can be listed and destroyed:: + + testpmd> flow list 0 + + check the rule listed. + destroy the rule:: + + testpmd> flow destroy 0 rule 0 + +4. verify matched packet is distributed by RSS without FDIR matched ID. + check there is no rule listed. + +Subcase 2: MAC_IPV6_PAY rss queues +---------------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions rss queues 8 9 10 11 12 13 14 15 end / mark / end + +2. send multicast matched packets, check the packets is distributed to queue 8-15 with FDIR matched ID=0x0. + send multicast mismatched packets, check the packets are distributed by RSS without FDIR matched ID. + +3. repeat step 3 of subcase 1. + +4. verify matched packet is distributed by RSS without FDIR matched ID. + check there is no rule listed. + +Subcase 3: MAC_IPV6_PAY passthru +-------------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions passthru / mark / end + +2. send multicast matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0. + send multicast mismatched packets, check the packets are distributed by RSS without FDIR matched ID. + +3. repeat step 3 of subcase 1. + +4. verify matched packets are destributed to the same queue without FDIR matched ID . + check there is no rule listed. + +Subcase 4: MAC_IPV6_PAY drop +---------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions drop / mark / end + +2. send multicast matched packets, check the packets are dropped. + send multicast mismatched packets, check the packets are not dropped. + +3. repeat step 3 of subcase 1. + +4. verify matched packet is dropped. + check there is no rule listed. + +Subcase 5: MAC_IPV6_PAY mark+rss +-------------------------------- +Note: This combined action is mark with RSS which is without queues specified. + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions mark / rss / end + +2. send multicast matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0 + send multicast mismatched packets, check the packets are distributed by RSS without FDIR matched ID. + +3. repeat step 3 of subcase 1. + +4. verify matched packets are distributed to the same queue without FDIR matched ID. + check there is no rule listed. + +Subcase 6: MAC_IPV6_PAY mark +---------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions mark / end + +2. repeat the steps of passthru with mark part in subcase 3, + get the same result. + +Subcase 7: MAC_IPV6_PAY protocal +-------------------------------- + +1. create filter rules:: + + flow create 0 ingress pattern eth / ipv6 dst is ff01::2 proto is 17 / end actions rss queues 5 6 end / mark id 0 / end + flow create 0 ingress pattern eth / ipv6 dst is ff01::2 proto is 6 / end actions mark id 2 / rss / end + +2. send matched packets:: + + pkt1 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=17, tc=1, hlim=2)/("X"*480) + pkt2 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480) + pkt3 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=17)/TCP(sport=22,dport=23)/("X"*480) + pkt4 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/UDP(sport=22,dport=23)/TCP(sport=22,dport=23)/("X"*480) + pkt5 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=6)/("X"*480) + pkt6 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/TCP(sport=22,dport=23)/("X"*480) + + check pkt1-pkt4 are redirected to queue 5 or queue 6 with FDIR matched ID=0x0. + check pkt5 and pkt6 are distributed by RSS with FDIR matched ID=0x2. + send mismatched packets:: + + pkt7 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::3", nh=1)/("X"*480) + pkt8 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/SCTP()/("X"*480) + pkt9 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=1)/TCP(sport=22,dport=23)/("X"*480) + + check the packets are received without FDIR matched ID. + +3. repeat step 3 of subcase 1. + +4. verify matched packets are received without FDIR matched ID. + check there is no rule listed. From patchwork Wed Jul 27 02:20:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Weiyuan Li X-Patchwork-Id: 114250 Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 958C6A034C; Wed, 27 Jul 2022 04:21:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 43B0B42826; Wed, 27 Jul 2022 04:21:48 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id C52B640A89 for ; Wed, 27 Jul 2022 04:21:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658888507; x=1690424507; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LGEinyEIAKI9F8n6UnBbrtjXdoWbncQ0/fNlfEEa0F4=; b=dPkpT+SdfHBuvjrOMrMri1v2uxFcMTBfSMY34UBXQcApWpZpmpEO8I0/ yaBXLWROItxMrnq8SW53ixfZD3t1HlBnSvTlLaQXET9cosxKpw9Wa/sFD V1uLJQId7TfBnovXJ+q/aasM16m0O4076rHhPxtC5NgwChlEHM3N50FGT 0JJNrkkK7+ltMngUOhSL/VxxS2nGuXyodYZdEAvlSrJkvYqa99S3gHKBr mzGViNjOhNETk/HO6dYKKcmxwldKdDa3CJX3oOdhYmYxjkbBCkCRVu5Ww zFdX5uraBsxSvRkeka/GjGXDglcX3xEafRRfei6RDXVl8oK9c+nVYnqm6 Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10420"; a="289317537" X-IronPort-AV: E=Sophos;i="5.93,194,1654585200"; d="scan'208";a="289317537" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2022 19:21:29 -0700 X-IronPort-AV: E=Sophos;i="5.93,194,1654585200"; d="scan'208";a="628186416" Received: from unknown (HELO localhost.localdomain) ([10.239.252.248]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2022 19:21:27 -0700 From: Weiyuan Li To: dts@dpdk.org, yuan.peng@intel.com Cc: Weiyuan Li Subject: [dts][PATCH V1 4/4] tests/ice_iavf_fdir: add new test suite Date: Wed, 27 Jul 2022 10:20:53 +0800 Message-Id: <20220727022053.11076-4-weiyuanx.li@intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220727022053.11076-1-weiyuanx.li@intel.com> References: <20220727022053.11076-1-weiyuanx.li@intel.com> MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Add DPDK22.07 new feature test suite. Signed-off-by: Weiyuan Li --- tests/TestSuite_ice_iavf_fdir.py | 363 ++++++++++++++++++++++++++++++- 1 file changed, 361 insertions(+), 2 deletions(-) diff --git a/tests/TestSuite_ice_iavf_fdir.py b/tests/TestSuite_ice_iavf_fdir.py index a4df6151..78879ee3 100644 --- a/tests/TestSuite_ice_iavf_fdir.py +++ b/tests/TestSuite_ice_iavf_fdir.py @@ -29,6 +29,20 @@ MAC_IPV4_PAY = { ], } +MAC_IPV4_PAY_MULTICAST = { + "match": [ + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=4) / Raw("X" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=4)/UDP(sport=22,dport=23)/Raw("x" * 80)', + ], + "mismatch": [ + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.22",dst="224.0.0.1", proto=255, ttl=2, tos=4) / Raw("X" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.2", proto=255, ttl=2, tos=4) / Raw("X" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=1, ttl=2, tos=4) / Raw("X" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=3, tos=4) / Raw("X" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=9) / Raw("X" * 80)', + ], +} + MAC_IPV4_PAY_protocol = { "match": [ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=1)/Raw("x" * 80)', @@ -46,6 +60,24 @@ MAC_IPV4_PAY_protocol = { ], } +MAC_IPV4_PAY_multicast_protocol = { + "match": [ + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=1)/Raw("x" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.19",dst="224.0.0.1", proto=1)/Raw("x" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", ttl=2, tos=4)/UDP(sport=22,dport=23)/Raw("x" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=17)/TCP(sport=22,dport=23)/Raw("x" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=17, ttl=2, tos=4)/Raw("x" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=17)/Raw("x" * 80)', + ], + "mismatch": [ + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.2", proto=1)/Raw("x" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=6)/UDP(sport=22,dport=23)/Raw("x" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1")/TCP(sport=22,dport=23)/Raw("x" * 80)', + 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", ttl=2, tos=4)/SCTP()/Raw("x" * 80)', + ], +} + + MAC_IPV4_UDP = { "match": [ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw("x" * 80)' @@ -105,6 +137,20 @@ MAC_IPV6_PAY = { ], } +MAC_IPV6_PAY_MULTICAST = { + "match": [ + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)', + ], + "mismatch": [ + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::1", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::1", nh=0, tc=1, hlim=2)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=2, tc=1, hlim=2)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=2, hlim=2)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=5)/("X"*480)', + ], +} + MAC_IPV6_PAY_protocol = { "match": [ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=17, tc=1, hlim=2)/("X"*480)', @@ -121,6 +167,22 @@ MAC_IPV6_PAY_protocol = { ], } +MAC_IPV6_PAY_multicast_protocol = { + "match": [ + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=17, tc=1, hlim=2)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=17)/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/UDP(sport=22,dport=23)/TCP(sport=22,dport=23)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=6)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/TCP(sport=22,dport=23)/("X"*480)', + ], + "mismatch": [ + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::3", nh=1)/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/SCTP()/("X"*480)', + 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=1)/TCP(sport=22,dport=23)/("X"*480)', + ], +} + MAC_IPV6_UDP = { "match": [ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)' @@ -7214,6 +7276,94 @@ tv_mac_ipv4_gre_ipv6_tcp_mark = { "check_param": {"port_id": 0, "passthru": 1, "mark_id": 3}, } +tv_mac_ipv4_pay_queue_index_multicast = { + "name": "test_mac_ipv4_pay_queue_index_multicast", + "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark / end", + "scapy_str": MAC_IPV4_PAY_MULTICAST, + "check_param": {"port_id": 0, "queue": 1, "mark_id": 0}, +} + +tv_mac_ipv4_pay_rss_multicast = { + "name": "test_mac_ipv4_pay_rss_multicast", + "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / mark / end", + "scapy_str": MAC_IPV4_PAY_MULTICAST, + "check_param": {"port_id": 0, "queue": [2, 3], "mark_id": 0}, +} + +tv_mac_ipv4_pay_passthru_multicast = { + "name": "test_mac_ipv4_pay_passthru_multicast", + "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions passthru / mark / end", + "scapy_str": MAC_IPV4_PAY_MULTICAST, + "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}, +} + +tv_mac_ipv4_pay_drop_multicast = { + "name": "test_mac_ipv4_pay_drop_multicast", + "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions drop / mark / end", + "scapy_str": MAC_IPV4_PAY_MULTICAST, + "check_param": {"port_id": 0, "drop": 1, "mark_id": 0}, +} + +tv_mac_ipv4_pay_mark_rss_multicast = { + "name": "test_mac_ipv4_pay_mark_rss_multicast", + "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions mark / rss / end", + "scapy_str": MAC_IPV4_PAY_MULTICAST, + "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}, +} + +tv_mac_ipv4_pay_mark_multicast = { + "name": "test_mac_ipv4_pay_mark_multicast", + "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions mark / end", + "scapy_str": MAC_IPV4_PAY_MULTICAST, + "check_param": {"port_id": 0, "mark_id": 0}, +} + +tv_mac_ipv6_pay_queue_index_multicast = { + "name": "test_mac_ipv4_pay_queue_index_multicast", + "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions queue index 15 / mark / end", + "scapy_str": MAC_IPV6_PAY_MULTICAST, + "check_param": {"port_id": 0, "queue": 15, "mark_id": 0}, +} + +tv_mac_ipv6_pay_rss_multicast = { + "name": "test_mac_ipv6_pay_rss_multicast", + "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions rss queues 8 9 10 11 12 13 14 15 end / mark / end", + "scapy_str": MAC_IPV6_PAY_MULTICAST, + "check_param": { + "port_id": 0, + "queue": [8, 9, 10, 11, 12, 13, 14, 15], + "mark_id": 0, + }, +} + +tv_mac_ipv6_pay_passthru_multicast = { + "name": "test_mac_ipv6_pay_passthru_multicast", + "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions passthru / mark / end", + "scapy_str": MAC_IPV6_PAY_MULTICAST, + "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}, +} + +tv_mac_ipv6_pay_drop_multicast = { + "name": "test_mac_ipv6_pay_drop_multicast", + "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions drop / mark / end", + "scapy_str": MAC_IPV6_PAY_MULTICAST, + "check_param": {"port_id": 0, "drop": 1, "mark_id": 0}, +} + +tv_mac_ipv6_pay_mark_rss_multicast = { + "name": "test_mac_ipv6_pay_mark_rss_multicast", + "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions mark / rss / end", + "scapy_str": MAC_IPV6_PAY_MULTICAST, + "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}, +} + +tv_mac_ipv6_pay_mark_multicast = { + "name": "test_mac_ipv6_pay_mark_multicast", + "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions mark / end", + "scapy_str": MAC_IPV6_PAY_MULTICAST, + "check_param": {"port_id": 0, "mark_id": 0}, +} + vectors_ipv4_pay = [ tv_mac_ipv4_pay_queue_index, tv_mac_ipv4_pay_mark_rss, @@ -7223,6 +7373,15 @@ vectors_ipv4_pay = [ tv_mac_ipv4_pay_mark, ] +vectors_ipv4_pay_multicast = [ + tv_mac_ipv4_pay_queue_index_multicast, + tv_mac_ipv4_pay_rss_multicast, + tv_mac_ipv4_pay_passthru_multicast, + tv_mac_ipv4_pay_drop_multicast, + tv_mac_ipv4_pay_mark_rss_multicast, + tv_mac_ipv4_pay_mark_multicast, +] + vectors_ipv4_udp = [ tv_mac_ipv4_udp_drop, tv_mac_ipv4_udp_queue_group, @@ -7259,6 +7418,15 @@ vectors_ipv6_pay = [ tv_mac_ipv6_pay_mark, ] +vectors_ipv6_pay_multicast = [ + tv_mac_ipv6_pay_queue_index_multicast, + tv_mac_ipv6_pay_rss_multicast, + tv_mac_ipv6_pay_passthru_multicast, + tv_mac_ipv6_pay_drop_multicast, + tv_mac_ipv6_pay_mark_rss_multicast, + tv_mac_ipv6_pay_mark_multicast, +] + vectors_ipv6_udp = [ tv_mac_ipv6_udp_drop, tv_mac_ipv6_udp_queue_group, @@ -8415,13 +8583,56 @@ class TestICEIAVFFdir(TestCase): # get PF interface name self.used_dut_port_0 = self.dut_ports[0] self.used_dut_port_1 = self.dut_ports[1] - + self.flag = "vf-true-promisc-support" + self.default_stats = self.dut.get_priv_flags_state( + self.dut.ports_info[self.dut_ports[0]]["intf"], self.flag + ) + if ( + self.running_case + in [ + "test_mac_ipv4_pay_multicast", + "test_mac_ipv4_multicast_protocol", + "test_mac_ipv6_pay_multicast", + "test_mac_ipv6_multicast_protocol", + ] + and self.default_stats + ): + self.dut.send_expect( + "ethtool --set-priv-flags %s %s on" + % (self.dut.ports_info[self.dut_ports[0]]["intf"], self.flag), + "# ", + ) + self.dut.send_expect( + "ethtool --show-priv-flags %s" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) # generate 2 VFs on PF self.dut.generate_sriov_vfs_by_port(self.used_dut_port_0, 2, driver=driver) self.dut.generate_sriov_vfs_by_port(self.used_dut_port_1, 2, driver=driver) self.sriov_vfs_pf0 = self.dut.ports_info[self.used_dut_port_0]["vfs_port"] self.sriov_vfs_pf1 = self.dut.ports_info[self.used_dut_port_1]["vfs_port"] - + if ( + self.running_case + in [ + "test_mac_ipv4_pay_multicast", + "test_mac_ipv4_multicast_protocol", + "test_mac_ipv6_pay_multicast", + "test_mac_ipv6_multicast_protocol", + ] + and self.default_stats + ): + out = self.dut.send_expect( + "ip link set %s vf 0 trust on" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) + if "RTNETLINK answers: Invalid argument" in out: + self.dut.send_expect( + "ip link set %s vf 0 trust on" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) self.dut.send_expect( "ip link set %s vf 0 mac 00:11:22:33:44:55" % self.pf0_intf, "#" ) @@ -8510,6 +8721,13 @@ class TestICEIAVFFdir(TestCase): self.pmd_output.execute_cmd( "port config 1 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd" ) + if self.running_case in [ + "test_mac_ipv4_pay_multicast", + "test_mac_ipv4_multicast_protocol", + "test_mac_ipv6_pay_multicast", + "test_mac_ipv6_multicast_protocol", + ]: + self.pmd_output.execute_cmd("set allmulti all on") res = self.pmd_output.wait_link_status_up("all", timeout=15) self.verify(res is True, "there have port link is down") self.pmd_output.execute_cmd("start") @@ -8656,6 +8874,9 @@ class TestICEIAVFFdir(TestCase): def test_mac_ipv4_pay(self): self.rte_flow_process(vectors_ipv4_pay) + def test_mac_ipv4_pay_multicast(self): + self.rte_flow_process(vectors_ipv4_pay_multicast) + def test_mac_ipv4_udp(self): self.rte_flow_process(vectors_ipv4_udp) @@ -8668,6 +8889,9 @@ class TestICEIAVFFdir(TestCase): def test_mac_ipv6_pay(self): self.rte_flow_process(vectors_ipv6_pay) + def test_mac_ipv6_pay_multicast(self): + self.rte_flow_process(vectors_ipv6_pay_multicast) + def test_mac_ipv6_udp(self): self.rte_flow_process(vectors_ipv6_udp) @@ -8784,6 +9008,53 @@ class TestICEIAVFFdir(TestCase): out4, pkt_num=6, check_param={"port_id": 0, "passthru": 1}, stats=False ) + def test_mac_ipv4_multicast_protocol(self): + rules = [ + "flow create 0 ingress pattern eth / ipv4 dst is 224.0.0.1 proto is 1 / end actions queue index 1 / mark id 1 / end", + "flow create 0 ingress pattern eth / ipv4 dst is 224.0.0.1 proto is 17 / end actions passthru / mark id 3 / end", + ] + + # validate rules + self.validate_fdir_rule(rules, check_stats=True) + self.check_fdir_rule(port_id=0, stats=False) + + # create rules + rule_li = self.create_fdir_rule(rules, check_stats=True) + self.check_fdir_rule(port_id=0, rule_list=rule_li) + + # pkt1 and pkt2 in "match" match rule 0, pkt3-6 match rule 1. + out1 = self.send_pkts_getouput(MAC_IPV4_PAY_multicast_protocol["match"][0:2]) + rfc.check_iavf_fdir_mark( + out1, + pkt_num=2, + check_param={"port_id": 0, "mark_id": 1, "queue": 1}, + stats=True, + ) + + out2 = self.send_pkts_getouput(MAC_IPV4_PAY_multicast_protocol["match"][2:6]) + rfc.check_iavf_fdir_mark( + out2, + pkt_num=4, + check_param={"port_id": 0, "mark_id": 3, "passthru": 1}, + stats=True, + ) + + # send mismatched packets: + out3 = self.send_pkts_getouput(MAC_IPV4_PAY_multicast_protocol["mismatch"]) + rfc.check_iavf_fdir_mark( + out3, pkt_num=4, check_param={"port_id": 0, "passthru": 1}, stats=False + ) + + # destroy the rules and check there is no rule listed. + self.destroy_fdir_rule(rule_id=rule_li, port_id=0) + self.check_fdir_rule(port_id=0, stats=False) + + # send matched packet + out4 = self.send_pkts_getouput(MAC_IPV4_PAY_multicast_protocol["match"]) + rfc.check_iavf_fdir_mark( + out4, pkt_num=6, check_param={"port_id": 0, "passthru": 1}, stats=False + ) + def test_mac_ipv6_protocol(self): rules = [ "flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 17 / end actions rss queues 5 6 end / mark id 0 / end", @@ -8831,6 +9102,53 @@ class TestICEIAVFFdir(TestCase): out4, pkt_num=6, check_param={"port_id": 0, "passthru": 1}, stats=False ) + def test_mac_ipv6_multicast_protocol(self): + rules = [ + "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 proto is 17 / end actions rss queues 5 6 end / mark id 0 / end", + "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 proto is 6 / end actions mark id 2 / rss / end", + ] + + # validate rules + self.validate_fdir_rule(rules, check_stats=True) + self.check_fdir_rule(port_id=0, stats=False) + + # create rules + rule_li = self.create_fdir_rule(rules, check_stats=True) + self.check_fdir_rule(port_id=0, rule_list=rule_li) + + # pkt1-4 in "match" match rule 0, pkt5-6 match rule 1. + out1 = self.send_pkts_getouput(MAC_IPV6_PAY_multicast_protocol["match"][0:4]) + rfc.check_iavf_fdir_mark( + out1, + pkt_num=4, + check_param={"port_id": 0, "mark_id": 0, "queue": [5, 6]}, + stats=True, + ) + + out2 = self.send_pkts_getouput(MAC_IPV6_PAY_multicast_protocol["match"][4:6]) + rfc.check_iavf_fdir_mark( + out2, + pkt_num=2, + check_param={"port_id": 0, "mark_id": 2, "passthru": 1}, + stats=True, + ) + + # send mismatched packets: + out3 = self.send_pkts_getouput(MAC_IPV6_PAY_multicast_protocol["mismatch"]) + rfc.check_iavf_fdir_mark( + out3, pkt_num=3, check_param={"port_id": 0, "passthru": 1}, stats=False + ) + + # destroy the rules and check there is no rule listed. + self.destroy_fdir_rule(rule_id=rule_li, port_id=0) + self.check_fdir_rule(port_id=0, stats=False) + + # send matched packet + out4 = self.send_pkts_getouput(MAC_IPV6_PAY_multicast_protocol["match"]) + rfc.check_iavf_fdir_mark( + out4, pkt_num=6, check_param={"port_id": 0, "passthru": 1}, stats=False + ) + @skip_unsupported_pkg("os default") def test_mac_ipv4_gtpu_eh_without_teid(self): rules = [ @@ -11604,6 +11922,47 @@ class TestICEIAVFFdir(TestCase): def tear_down(self): # destroy all flow rule on port 0 self.dut.kill_all() + self.flag = "vf-true-promisc-support" + self.default_stats = self.dut.get_priv_flags_state( + self.dut.ports_info[self.dut_ports[0]]["intf"], self.flag + ) + if ( + self.running_case + in [ + "test_mac_ipv4_pay_multicast", + "test_mac_ipv4_multicast_protocol", + "test_mac_ipv6_pay_multicast", + "test_mac_ipv6_multicast_protocol", + ] + and self.default_stats + ): + self.dut.send_expect( + "ethtool --set-priv-flags %s %s off" + % (self.dut.ports_info[self.dut_ports[0]]["intf"], self.flag), + "# ", + ) + if ( + self.running_case + in [ + "test_mac_ipv4_pay_multicast", + "test_mac_ipv4_multicast_protocol", + "test_mac_ipv6_pay_multicast", + "test_mac_ipv6_multicast_protocol", + ] + and self.default_stats + ): + out = self.dut.send_expect( + "ip link set %s vf 0 trust off" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) + if "RTNETLINK answers: Invalid argument" in out: + self.dut.send_expect( + "ip link set %s vf 0 trust off" + % (self.dut.ports_info[self.dut_ports[0]]["intf"]), + "# ", + ) + self.destroy_env() if getattr(self, "session_secondary", None): self.dut.close_session(self.session_secondary)