From patchwork Thu Jun 23 11:15:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Huang, ZhiminX" X-Patchwork-Id: 113295 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 F3CC8A0545; Thu, 23 Jun 2022 04:51:10 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EB6F340A82; Thu, 23 Jun 2022 04:51:10 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 4D2B54069C for ; Thu, 23 Jun 2022 04:51:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655952669; x=1687488669; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=hhGtZp2943lBHtXmfN+9iTZC1V3/Pvr8Zd3d7orLKaE=; b=ZuTt3aL93oSf9mGZGKGp4nbC3BZI2N3Qgfdk342bXgYjbEH4Afiii/9O t9O3YfAPgu0ujMgxtNCAxuUG6doONDV9NhXZOFsPZGf6+pUCEcKhbS1cp C4sUMEeYpvjIW97o/NLnyERlzrA0ppmwN5OvX4HlUIj4xkkDg5i+i6ArK np9XK/fnvA+lZior9Z+N9NskEdMQb94HmcDj88iATmuzBnSdgJjSnOSq5 ambhKN+ZzZd7aCH3quDpKpC0216mDfnUP6FTt1E5V6OcFg7hH6ePl9Xr5 Lz0gcutg50HFX46NlTtwddT7ZqtRUvcXOZ7Oxhm5aBX7IUDU0n28WXqt6 g==; X-IronPort-AV: E=McAfee;i="6400,9594,10386"; a="366926919" X-IronPort-AV: E=Sophos;i="5.92,215,1650956400"; d="scan'208";a="366926919" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jun 2022 19:51:08 -0700 X-IronPort-AV: E=Sophos;i="5.92,215,1650956400"; d="scan'208";a="644509289" Received: from unknown (HELO localhost.localdomain) ([10.239.252.93]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jun 2022 19:51:06 -0700 From: Zhimin Huang To: dts@dpdk.org Cc: Zhimin Huang Subject: [dts][PATCH V1 1/2] test_plans/ice_fdir:add mark id to adapt fdir rule Date: Thu, 23 Jun 2022 19:15:37 +0800 Message-Id: <20220623111538.25162-1-zhiminx.huang@intel.com> X-Mailer: git-send-email 2.17.1 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 according to dpdk e4a0a7599d974f05665fec3e4c251659f0b11453. the switch has higher prirority than fdir,for rules that support both switch and fdir will take into switch. so we need add mark id to ensure take rules into fdir. Signed-off-by: Zhimin Huang --- test_plans/ice_fdir_test_plan.rst | 134 +++++++++++++++--------------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/test_plans/ice_fdir_test_plan.rst b/test_plans/ice_fdir_test_plan.rst index 7ff6b69f..1bb11ae1 100644 --- a/test_plans/ice_fdir_test_plan.rst +++ b/test_plans/ice_fdir_test_plan.rst @@ -547,7 +547,7 @@ Test case: flow validation 1. validate MAC_IPV4_PAY with queue index action:: - flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end + flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark / end get the message:: @@ -690,9 +690,9 @@ Subcase 1: MAC_IPV4_PAY queue index 1. create filter rules:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark / end -2. send matched packets, check the packets are distributed to queue 1 without FDIR matched ID. +2. send matched packets, check the packets are distributed to queue 1 with FDIR matched ID. send unmatched packets, check the packets are distributed by RSS without FDIR matched ID. 3. verify rules can be listed and destroyed:: @@ -712,9 +712,9 @@ Subcase 2: MAC_IPV4_PAY rss queues 1. create filter rules:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / mark / end -2. send matched packets, check the packets are distributed to queue 2 or 3 without without FDIR matched ID. +2. send matched packets, check the packets are distributed to queue 2 or 3 without with FDIR matched ID. send unmatched packets, check the packets are distributed by RSS without FDIR matched ID. 3. repeat step 3 of subcase 1. @@ -727,9 +727,9 @@ Subcase 3: MAC_IPV4_PAY passthru 1. create filter rules:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions passthru / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions passthru / mark / end -2. send matched packets, check the packets are distributed by RSS without FDIR matched ID. +2. send matched packets, check the packets are distributed by RSS with FDIR matched ID. send unmatched packets, check the packets are distributed by RSS without FDIR matched ID. 3. repeat step 3 of subcase 1. @@ -984,7 +984,7 @@ Subcase 4: MAC_IPV6_PAY drop 1. create filter rules:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions drop / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions drop / mark / end 2. send matched packets, check the packets are dropped. send unmatched packets, check the packets are not dropped. @@ -1082,9 +1082,9 @@ Subcase 2: MAC_IPV6_UDP rss queues 1. create filter rules:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss / mark / end -2. send matched packets, check the packets is distributed by RSS without FDIR matched ID. +2. send matched packets, check the packets is distributed by RSS with FDIR matched ID. send unmatched packets, check the packets are distributed by RSS without FDIR matched ID too. 3. repeat step 3 of subcase 1. @@ -1172,9 +1172,9 @@ Subcase 1: MAC_IPV4_TUN_IPV4_PAY queue index 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end + flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark / end -2. send matched packets, check the packets are distributed to queue 1 without FDIR matched ID. +2. send matched packets, check the packets are distributed to queue 1 with FDIR matched ID. send unmatched packets, check the packets are distributed by RSS without FDIR matched ID. 3. verify rules can be listed and destroyed:: @@ -1209,7 +1209,7 @@ Subcase 3: MAC_IPV4_TUN_IPV4_PAY drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end + flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / mark / end 2. send matched packets, check the packets dropped. send unmatched packets, check the packets are not dropped. @@ -1290,7 +1290,7 @@ Subcase 3: MAC_IPV4_TUN_IPV4_UDP drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / end + flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / mark / end 2. send matched packets, check the packets are dropped. send unmatched packets, check the packets are received without FDIR matched ID. @@ -1348,9 +1348,9 @@ Subcase 1: MAC_IPV4_TUN_MAC_IPV4_PAY queue index 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 0 / end + flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 0 / mark / end -2. send matched packets, check the packets are distributed to queue 0 without FDIR matched ID. +2. send matched packets, check the packets are distributed to queue 0 with FDIR matched ID. send unmatched packets, check the packets are distributed by RSS without FDIR matched ID. 3. verify rules can be listed and destroyed:: @@ -1370,9 +1370,9 @@ Subcase 2: MAC_IPV4_TUN_MAC_IPV4_PAY rss queues 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 end / end + flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 end / mark / end -2. send matched packets, check the packets are distributed to queue group without FDIR matched ID. +2. send matched packets, check the packets are distributed to queue group with FDIR matched ID. send unmatched packets, check the packets are distributed by RSS without FDIR matched ID. 3. repeat step 3 of subcase 1. @@ -1385,9 +1385,9 @@ Subcase 3: MAC_IPV4_TUN_MAC_IPV4_PAY passthru 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / end + flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark / end -2. send matched packets, check the packets are distributed by RSS without FDIR matched ID. +2. send matched packets, check the packets are distributed by RSS with FDIR matched ID. send unmatched packets, check the packets are distributed by RSS without FDIR matched ID. 3. repeat step 3 of subcase 1. @@ -1605,7 +1605,7 @@ Subcase 4: MAC_IPV4_GTPU_EH drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end + flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / mark / end 2. send matched packets, check the packets are dropped. send unmatched packets, check the packets are not dropped without FDIR matched ID. @@ -1818,7 +1818,7 @@ Subcase 17: MAC_IPV4_GTPU_EH outer dst ip drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu / gtp_psc / end actions drop / end + flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu / gtp_psc / end actions drop / mark / end 2. send matched packets, check the packets are dropped. send unmatched packets, check the packets are not dropped without FDIR matched ID. @@ -1898,7 +1898,7 @@ Subcase 22: MAC_IPV4_GTPU_EH outer src ip drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu / gtp_psc / end actions drop / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu / gtp_psc / end actions drop / mark / end 2. send matched packets, check the packets are dropped. send unmatched packets, check the packets are not dropped without FDIR matched ID. @@ -2316,7 +2316,7 @@ Subcase 4: MAC_IPV6_GTPU_EH 4 tuple drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end + flow create 0 ingress pattern eth / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / mark / end 2. send matched packets, check the packets are dropped. send unmatched packets, check the packets are not dropped without FDIR matched ID. @@ -2396,7 +2396,7 @@ Subcase 9: MAC_IPV6_GTPU_EH outer dst ipv6 drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / gtp_psc / end actions drop / end + flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / gtp_psc / end actions drop / mark / end 2. send matched packets, check the packets are dropped. send unmatched packets, check the packets are not dropped without FDIR matched ID. @@ -2476,7 +2476,7 @@ Subcase 14: MAC_IPV6_GTPU_EH outer src ipv6 drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / gtp_psc / end actions drop / end + flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / gtp_psc / end actions drop / mark / end 2. send matched packets, check the packets are dropped. send unmatched packets, check the packets are not dropped without FDIR matched ID. @@ -2562,7 +2562,7 @@ Subcase 4: MAC_IPV6_GTPU 4 tuple drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / end actions drop / end + flow create 0 ingress pattern eth / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / end actions drop / mark / end 2. send matched packets, check the packets are dropped. send unmatched packets, check the packets are not dropped without FDIR matched ID. @@ -3077,7 +3077,7 @@ Subcase 4: MAC_IPV6_ESP drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / esp spi is 7 / end actions drop / end + flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / esp spi is 7 / end actions drop / mark / end 2. send matched packets, check the packets are dropped send mismatched packets, check the packets are not dropped. @@ -3277,7 +3277,7 @@ Subcase 4: MAC_IPV6_NAT-T-ESP drop 1. create filter rules:: - flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions drop / end + flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions drop / mark / end 2. send matched packets, check the packets are dropped send mismatched packets, check the packets are not dropped. @@ -3326,7 +3326,7 @@ Subcase 1: invalid parameters of queue index 1. Invalid parameters:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 64 / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 64 / mark / end Failed to create flow, report message:: @@ -3339,9 +3339,9 @@ Subcase 2: invalid parameters of rss queues 1. Invalid number of queues:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 end / end - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 0 end / end - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues end / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 end / mark / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 0 end / mark / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues end / mark / end Failed to create flow, report message:: @@ -3349,7 +3349,7 @@ Subcase 2: invalid parameters of rss queues 2. Discontinuous queues:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 5 end / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 5 end / mark / end Failed to create flow, report message:: @@ -3357,7 +3357,7 @@ Subcase 2: invalid parameters of rss queues 3. invalid queue index:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 63 64 end / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 63 64 end / mark / end Failed to create flow, report message:: @@ -3365,7 +3365,7 @@ Subcase 2: invalid parameters of rss queues 4. "--rxq=7 --txq=7", set queue group 8 queues:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 0 1 2 3 4 5 6 7 end / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 0 1 2 3 4 5 6 7 end / mark / end Failed to create flow, report message:: @@ -3383,8 +3383,8 @@ Subcase 3: Invalid parameters of input set 1. Invalid value of teid and qfi:: - flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / gtp_psc qfi is 0x5 / end actions queue index 2 / end - flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / end actions queue index 1 / end + flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / gtp_psc qfi is 0x5 / end actions queue index 2 / mark / end + flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / end actions queue index 1 / mark / end Failed to create flow, report message "Bad arguments" @@ -3452,7 +3452,7 @@ Subcase 7: conflicted actions 1. Create a rule with two conflicted actions:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / rss queues 2 3 end / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / rss queues 2 3 end / mark / end Failed to create flow, report message:: @@ -3503,7 +3503,7 @@ Subcase 10: unsupported input set field 1. Create a IPV4_PAY rule with TC input set:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tc is 2 / end actions queue index 1 / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tc is 2 / end actions queue index 1 / mark / end Failed to create flow, report message:: @@ -3516,7 +3516,7 @@ Subcase 11: invalid port 1. Create a rule on port 2:: - flow create 2 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end + flow create 2 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark / end Failed to create flow, report message:: @@ -3532,7 +3532,7 @@ Subcase 12: unsupported pattern 1. Create a GTPU rule with OS default package:: - flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end + flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / mark / end Failed to create flow, report error message. @@ -3591,8 +3591,8 @@ Subcase 1: count for 1 rule 1. create filter rules:: - flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / count / end - flow create 1 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions count / end + flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / count / mark / end + flow create 1 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions count / mark / end 2. send matched packets to port0 and port1, the packets received by port0 are redirected to queue 1. @@ -3640,14 +3640,14 @@ Subcase 2: count query identifier share 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions queue index 1 / count identifier 0x1234 / end - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions rss queues 2 3 end / count identifier 0x1234 / end - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.3 / end actions passthru / mark / count identifier 0x1234 / end - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.4 / end actions mark id 1 / rss / count identifier 0x1234 / end - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.5 / end actions queue index 5 / count / end - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.6 / end actions drop / count / end - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.7 / end actions drop / count identifier 0x1235 / end - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.8 / end actions rss / count / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions queue index 1 / count identifier 0x1234 / mark / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions rss queues 2 3 end / count identifier 0x1234 / mark / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.3 / end actions passthru / mark / count identifier 0x1234 / mark / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.4 / end actions mark id 1 / rss / count identifier 0x1234 / mark / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.5 / end actions queue index 5 / count / mark / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.6 / end actions drop / count / mark / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.7 / end actions drop / count identifier 0x1235 / mark / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.8 / end actions rss / count / mark / end 2. send matched packets:: @@ -3736,15 +3736,15 @@ Subcase 3: multi patterns mark count query 1. create filter rules:: - flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 0 / count / end - flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / mark id 1 / count / end - flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss queues 62 63 end / mark id 2 / count / end - flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions queue index 1 / mark id 3 / count / end - flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 3 / mark id 4 / count / end - flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 / tcp dst is 23 / end actions queue index 4 / count / mark id 5 / end - flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 5 / mark id 6 / count / end + flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 0 / count / mark / end + flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / mark id 1 / count / mark / end + flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss queues 62 63 end / mark id 2 / count / mark / end + flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions queue index 1 / mark id 3 / count / mark / end + flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 3 / mark id 4 / count / mark / end + flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 / tcp dst is 23 / end actions queue index 4 / count / mark id 5 / mark / end + flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 5 / mark id 6 / count / mark / end flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions rss queues 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 \ - 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 end / mark id 100 / count / end + 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 end / mark id 100 / count / mark / end 2. send matched packets:: @@ -3830,12 +3830,12 @@ Subcase 4: max count number 1. create 257 flows with count:: - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions drop / count / end - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions drop / count / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions drop / mark / count / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions drop / mark / count / end …… - flow create 0 ingress pattern eth / ipv4 src is 192.168.0.255 / end actions drop / count / end - flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 / end actions drop / count / end - flow create 0 ingress pattern eth / ipv4 src is 192.168.1.2 / end actions drop / count / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.255 / end actions drop / mark / count / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 / end actions drop / mark / count / end + flow create 0 ingress pattern eth / ipv4 src is 192.168.1.2 / end actions drop / mark / count / end the last one failed to create, report the error message:: @@ -3960,8 +3960,8 @@ Subcase 3: two ports multi patterns count query flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions rss queues 6 7 end / mark id 2 / count identifier 0x1234 / end flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss queues 6 7 end / mark id 1 / count / end flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions queue index 2 / mark / count / end - flow create 1 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / count / end - flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions drop / count / end + flow create 1 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / mark / count / end + flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions drop / mark / count / end flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions queue index 1 / mark id 1 / count identifier 0x1234 / end 2. send matched packets:: From patchwork Thu Jun 23 11:15:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Huang, ZhiminX" X-Patchwork-Id: 113296 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 24FEFA0545; Thu, 23 Jun 2022 04:51:13 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 177EC4069D; Thu, 23 Jun 2022 04:51:13 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 4C5DA4069C for ; Thu, 23 Jun 2022 04:51:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655952670; x=1687488670; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=zPt1c87ps5ct1wO99n6/QQNrsNOwYNmkdwRkYC48/nA=; b=Boc7u31tK1PDOnExlYsfJ/lSM9vs8yXChgq48W5ajSO/cedx8pCI3DvC ddGaQ+lfmJJ8Np8YFppai6h06dkqiqicqWmgB+XSl8K2N4g1Gou6m/b4/ whvRY3McAnm76UHdeiT0mweEiOakijfkO4y/q8pLi5SH6dUn7tB6wjIpE OJ+ayy2GIo2C8qjbc2UHoI1c1s2T9K7aahUxNevdQqQI59Gl+upNhoNui AfJV5PLoJbclVO2H3dCYaI1LPpj7KagGm/9+L/7wVaDVGqkQ6PI96Hotj tNzULKWDQyoCZgNxN8RhqGu/ONzwVPA4unAqz7WvRhHnwwv3l38bXp6WI Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10386"; a="366926927" X-IronPort-AV: E=Sophos;i="5.92,215,1650956400"; d="scan'208";a="366926927" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jun 2022 19:51:09 -0700 X-IronPort-AV: E=Sophos;i="5.92,215,1650956400"; d="scan'208";a="644509295" Received: from unknown (HELO localhost.localdomain) ([10.239.252.93]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jun 2022 19:51:08 -0700 From: Zhimin Huang To: dts@dpdk.org Cc: Zhimin Huang Subject: [dts][PATCH V1 2/2] tests/ice_fdir:add mark id to adapt fdir rule Date: Thu, 23 Jun 2022 19:15:38 +0800 Message-Id: <20220623111538.25162-2-zhiminx.huang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220623111538.25162-1-zhiminx.huang@intel.com> References: <20220623111538.25162-1-zhiminx.huang@intel.com> 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 according to dpdk e4a0a7599d974f05665fec3e4c251659f0b11453. the switch has higher prirority than fdir,for rules that support both switch and fdir will take into switch. so we need add mark id to ensure take rules into fdir. Signed-off-by: Zhimin Huang --- tests/TestSuite_ice_fdir.py | 184 +++++++++++++++++++----------------- 1 file changed, 98 insertions(+), 86 deletions(-) diff --git a/tests/TestSuite_ice_fdir.py b/tests/TestSuite_ice_fdir.py index e1309dfc..26f32b29 100644 --- a/tests/TestSuite_ice_fdir.py +++ b/tests/TestSuite_ice_fdir.py @@ -379,26 +379,26 @@ MAC_IPV6_NAT_T_ESP = { tv_mac_ipv4_pay_queue_index = { "name": "test_mac_ipv4_pay_queue_index", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark / end", "scapy_str": MAC_IPV4_PAY, "check_func": rfc.check_mark, - "check_param": {"port_id": 0, "queue": 1}, + "check_param": {"port_id": 0, "queue": 1, "mark_id": 0}, } tv_mac_ipv4_pay_rss_queues = { "name": "test_mac_ipv4_pay_rss_queues", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / mark / end", "scapy_str": MAC_IPV4_PAY, "check_func": rfc.check_mark, - "check_param": {"port_id": 0, "queue": [2, 3]}, + "check_param": {"port_id": 0, "queue": [2, 3], "mark_id": 0}, } tv_mac_ipv4_pay_passthru = { "name": "test_mac_ipv4_pay_passthru", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions passthru / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions passthru / mark / end", "scapy_str": MAC_IPV4_PAY, "check_func": rfc.check_mark, - "check_param": {"port_id": 0, "rss": True}, + "check_param": {"port_id": 0, "rss": True, "mark_id": 0}, } tv_mac_ipv4_pay_drop = { @@ -517,7 +517,7 @@ tv_mac_ipv4_tcp_passthru = { tv_mac_ipv4_tcp_drop = { "name": "test_mac_ipv4_tcp_drop", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions drop / mark / end", "scapy_str": MAC_IPV4_TCP, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -569,7 +569,7 @@ tv_mac_ipv4_sctp_passthru = { tv_mac_ipv4_sctp_drop = { "name": "test_mac_ipv4_sctp_drop", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end actions drop / mark / end", "scapy_str": MAC_IPV4_SCTP, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -626,7 +626,7 @@ tv_mac_ipv6_pay_passthru = { tv_mac_ipv6_pay_drop = { "name": "test_mac_ipv6_pay_drop", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions drop / mark / end", "scapy_str": MAC_IPV6_PAY, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -667,10 +667,10 @@ tv_mac_ipv6_udp_queue_index = { tv_mac_ipv6_udp_rss_queues = { "name": "test_mac_ipv6_udp_rss_queues", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss / mark / end", "scapy_str": MAC_IPV6_UDP, "check_func": rfc.check_mark, - "check_param": {"port_id": 0, "rss": True}, + "check_param": {"port_id": 0, "rss": True, "mark_id": 0}, } tv_mac_ipv6_udp_passthru = { @@ -683,7 +683,7 @@ tv_mac_ipv6_udp_passthru = { tv_mac_ipv6_udp_drop = { "name": "test_mac_ipv6_udp_drop", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions drop / mark / end", "scapy_str": MAC_IPV6_UDP, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -724,10 +724,10 @@ tv_mac_ipv6_tcp_queue_index = { tv_mac_ipv6_tcp_rss_queues = { "name": "test_mac_ipv6_tcp_rss_queues", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions rss / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions rss / mark / end", "scapy_str": MAC_IPV6_TCP, "check_func": rfc.check_mark, - "check_param": {"port_id": 0, "rss": True}, + "check_param": {"port_id": 0, "rss": True, "mark_id": 0}, } tv_mac_ipv6_tcp_passthru = { @@ -740,7 +740,7 @@ tv_mac_ipv6_tcp_passthru = { tv_mac_ipv6_tcp_drop = { "name": "test_mac_ipv6_tcp_drop", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions drop / mark / end", "scapy_str": MAC_IPV6_TCP, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -781,10 +781,10 @@ tv_mac_ipv6_sctp_queue_index = { tv_mac_ipv6_sctp_rss_queues = { "name": "test_mac_ipv6_sctp_rss_queues", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions rss / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions rss / mark / end", "scapy_str": MAC_IPV6_SCTP, "check_func": rfc.check_mark, - "check_param": {"port_id": 0, "rss": True}, + "check_param": {"port_id": 0, "rss": True, "mark_id": 0}, } tv_mac_ipv6_sctp_passthru = { @@ -797,7 +797,7 @@ tv_mac_ipv6_sctp_passthru = { tv_mac_ipv6_sctp_drop = { "name": "test_mac_ipv6_sctp_drop", - "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions drop / mark / end", "scapy_str": MAC_IPV6_SCTP, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -830,10 +830,10 @@ vectors_ipv6_sctp = [ tv_mac_ipv4_tun_ipv4_pay_queue_index = { "name": "test_mac_ipv4_tun_ipv4_pay_queue_index", - "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end", + "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark / end", "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY, "check_func": rfc.check_mark, - "check_param": {"port_id": 0, "queue": 1}, + "check_param": {"port_id": 0, "queue": 1, "mark_id": 0}, } tv_mac_ipv4_tun_ipv4_pay_passthru = { @@ -846,7 +846,7 @@ tv_mac_ipv4_tun_ipv4_pay_passthru = { tv_mac_ipv4_tun_ipv4_pay_drop = { "name": "test_mac_ipv4_tun_ipv4_pay_drop", - "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / mark / end", "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -902,7 +902,7 @@ tv_mac_ipv4_tun_ipv4_udp_passthru = { tv_mac_ipv4_tun_ipv4_udp_drop = { "name": "test_mac_ipv4_tun_ipv4_udp_drop", - "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / mark / end", "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -951,7 +951,7 @@ tv_mac_ipv4_tun_ipv4_tcp_passthru = { tv_mac_ipv4_tun_ipv4_tcp_drop = { "name": "test_mac_ipv4_tun_ipv4_tcp_drop", - "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / mark / end", "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -999,7 +999,7 @@ tv_mac_ipv4_tun_ipv4_sctp_passthru = { tv_mac_ipv4_tun_ipv4_sctp_drop = { "name": "test_mac_ipv4_tun_ipv4_sctp_drop", - "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions drop / mark / end", "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -1031,26 +1031,26 @@ vectors_ipv4_tun_ipv4_sctp = [ tv_mac_ipv4_tun_mac_ipv4_pay_queue_index = { "name": "test_mac_ipv4_tun_mac_ipv4_pay_queue_index", - "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 0 / end", + "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 0 / mark / end", "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY, "check_func": rfc.check_mark, - "check_param": {"port_id": 0, "queue": 0}, + "check_param": {"port_id": 0, "queue": 0, "mark_id": 0}, } tv_mac_ipv4_tun_mac_ipv4_pay_rss_queues = { "name": "test_mac_ipv4_tun_mac_ipv4_pay_rss_queues", - "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 end / end", + "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 end / mark / end", "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY, "check_func": rfc.check_mark, - "check_param": {"port_id": 0, "queue": [0, 1]}, + "check_param": {"port_id": 0, "queue": [0, 1], "mark_id": 0}, } tv_mac_ipv4_tun_mac_ipv4_pay_passthru = { "name": "test_mac_ipv4_tun_mac_ipv4_pay_passthru", - "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / end", + "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark / end", "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY, "check_func": rfc.check_mark, - "check_param": {"port_id": 0, "rss": True}, + "check_param": {"port_id": 0, "rss": True, "mark_id": 0}, } tv_mac_ipv4_tun_mac_ipv4_pay_drop = { @@ -1283,7 +1283,7 @@ tv_mac_ipv4_gtpu_eh_passthru = { tv_mac_ipv4_gtpu_eh_drop = { "name": "test_mac_ipv4_gtpu_eh_drop", - "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / mark / end", "scapy_str": MAC_IPV4_GTPU_EH, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -1361,7 +1361,7 @@ tv_mac_ipv4_gtpu_eh_4tuple_passthru = { tv_mac_ipv4_gtpu_eh_4tuple_drop = { "name": "test_mac_ipv4_gtpu_eh_4tuple_drop", - "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / mark / end", "scapy_str": MAC_IPV4_GTPU_EH, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -1422,7 +1422,7 @@ tv_mac_ipv4_gtpu_eh_dstip_passthru = { tv_mac_ipv4_gtpu_eh_dstip_drop = { "name": "test_mac_ipv4_gtpu_eh_dstip_drop", - "rule": "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu / gtp_psc / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu / gtp_psc / end actions drop / mark / end", "scapy_str": { "match": [ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.21", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTPPDUSessionContainer(type=0, P=1, QFI=0x35)/IP()/TCP()/Raw("x"*20)' @@ -1497,7 +1497,7 @@ tv_mac_ipv4_gtpu_eh_srcip_passthru = { tv_mac_ipv4_gtpu_eh_srcip_drop = { "name": "test_mac_ipv4_gtpu_eh_srcip_drop", - "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu / gtp_psc / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu / gtp_psc / end actions drop / mark / end", "scapy_str": { "match": [ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.22")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTPPDUSessionContainer(type=0, P=1, QFI=0x35)/IP()/TCP()/Raw("x"*20)' @@ -1839,7 +1839,7 @@ tv_mac_ipv6_gtpu_eh_4tuple_passthru = { tv_mac_ipv6_gtpu_eh_4tuple_drop = { "name": "test_mac_ipv6_gtpu_eh_4tuple_drop", - "rule": "flow create 0 ingress pattern eth / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / mark / end", "scapy_str": MAC_IPV6_GTPU_EH, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -1900,7 +1900,7 @@ tv_mac_ipv6_gtpu_eh_dstip_passthru = { tv_mac_ipv6_gtpu_eh_dstip_drop = { "name": "test_mac_ipv6_gtpu_eh_dstip_drop", - "rule": "flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / gtp_psc / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / gtp_psc / end actions drop / mark / end", "scapy_str": { "match": [ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::3", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTPPDUSessionContainer(type=0, P=1, QFI=0x35)/IPv6()/IPv6ExtHdrFragment()/Raw("x"*20)' @@ -1975,7 +1975,7 @@ tv_mac_ipv6_gtpu_eh_srcip_passthru = { tv_mac_ipv6_gtpu_eh_srcip_drop = { "name": "test_mac_ipv6_gtpu_eh_srcip_drop", - "rule": "flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / gtp_psc / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / gtp_psc / end actions drop / mark / end", "scapy_str": { "match": [ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTPPDUSessionContainer(type=0, P=1, QFI=0x35)/IPv6()/TCP(sport=22, dport=23)/Raw("x"*20)' @@ -2047,7 +2047,7 @@ tv_mac_ipv6_gtpu_3tuple_passthru = { tv_mac_ipv6_gtpu_3tuple_drop = { "name": "test_mac_ipv6_gtpu_3tuple_drop", - "rule": "flow create 0 ingress pattern eth / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / end actions drop / mark / end", "scapy_str": MAC_IPV6_GTPU, "check_func": rfc.check_mark, "check_param": {"port_id": 0, "drop": True}, @@ -2492,7 +2492,7 @@ tv_mac_ipv6_esp_passthru = { tv_mac_ipv6_esp_drop = { "name": "tv_mac_ipv6_esp_drop", - "rule": "flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / esp spi is 7 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / esp spi is 7 / end actions drop / mark / end", "scapy_str": { "match": MAC_IPV6_ESP["matched"], "unmatched": MAC_IPV6_ESP["unmatched"], @@ -2642,7 +2642,7 @@ tv_mac_ipv6_nat_t_esp_passthru = { tv_mac_ipv6_nat_t_esp_drop = { "name": "tv_mac_ipv6_nat_t_esp_drop", - "rule": "flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions drop / end", + "rule": "flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions drop / mark / end", "scapy_str": { "match": MAC_IPV6_NAT_T_ESP["matched"], "unmatched": MAC_IPV6_NAT_T_ESP["unmatched"], @@ -3025,14 +3025,14 @@ class TestICEFdir(TestCase): self.verify(m, "flow rule %s delete failed" % rule_id) def test_flow_validation(self): - rule = "flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end" + rule = "flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark / end" self.validate_fdir_rule(rule) rules3 = [ "flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark / count / end", "flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 end / mark id 1 / count identifier 0x1234 / end", "flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 2 / count identifier 0x34 / end", "flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions mark id 3 / rss / count / end", - "flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / count / end", + "flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / mark / count / end", ] self.validate_fdir_rule(rules3) self.check_fdir_rule(stats=False) @@ -3264,21 +3264,21 @@ class TestICEFdir(TestCase): self.check_fdir_rule(stats=False) def test_invalid_parameters_of_queue_index(self): - rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 64 / end" + rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 64 / mark / end" out = self.dut.send_command(rule, timeout=1) self.verify("error" in out, "failed with output: %s" % out) self.check_fdir_rule(port_id=0, stats=False) def test_invalid_parameters_of_rss_queues(self): rule1 = [ - "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 end / end", - "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 0 end / end", - "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues end / end", + "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 end / mark / end", + "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 0 end / mark / end", + "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues end / mark / end", ] self.create_fdir_rule(rule=rule1, check_stats=False, msg="error") - rule2 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 5 end / end" + rule2 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 5 end / mark / end" self.create_fdir_rule(rule2, check_stats=False, msg="error") - rule3 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 63 64 end / end" + rule3 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 63 64 end / mark / end" self.create_fdir_rule(rule3, check_stats=False, msg="error") try: # restart testpmd @@ -3286,7 +3286,7 @@ class TestICEFdir(TestCase): self.dut.kill_all() self.launch_testpmd_with_mark(rxq=7, txq=7) self.pmd_output.execute_cmd("start") - rule4 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 proto is 255 / end actions rss queues 0 1 2 3 4 5 6 7 end / end" + rule4 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 proto is 255 / end actions rss queues 0 1 2 3 4 5 6 7 end / mark / end" self.create_fdir_rule(rule4, check_stats=False) self.check_fdir_rule(port_id=0, stats=False) # restart testpmd @@ -3299,7 +3299,7 @@ class TestICEFdir(TestCase): rfc.check_mark( out, pkt_num=len(MAC_IPV4_PAY["match"]), - check_param={"port_id": 0, "queue": list(range(8))}, + check_param={"port_id": 0, "queue": list(range(8)), "mark_id": 0}, stats=True, ) out2 = self.send_pkts_getouput(pkts=MAC_IPV4_PAY["unmatched"]) @@ -3317,8 +3317,8 @@ class TestICEFdir(TestCase): def test_invalid_parameters_of_input_set(self): rule = [ - "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / gtp_psc qfi is 0x5 / end actions queue index 2 / end", - "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / end actions queue index 1 / end", + "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / gtp_psc qfi is 0x5 / end actions queue index 2 / mark / end", + "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / end actions queue index 1 / mark / end", ] self.create_fdir_rule(rule, check_stats=False, msg="Bad arguments") self.check_fdir_rule(stats=False) @@ -3365,18 +3365,18 @@ class TestICEFdir(TestCase): self.check_fdir_rule(stats=True, rule_list=rule_li) def test_conflicted_actions(self): - rule1 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / rss queues 2 3 end / end" + rule1 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / rss queues 2 3 end / mark / end" self.create_fdir_rule(rule1, check_stats=False, msg="error") self.check_fdir_rule(stats=False) def test_void_action(self): - rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions end" + rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / mark / end actions end" self.create_fdir_rule(rule, check_stats=False) self.check_fdir_rule(stats=False) def _test_unsupported_action(self): # now dpdk has already support only count action, so this case need update or abandon - rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions count / end" + rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / mark / end actions count / end" self.create_fdir_rule( rule, check_stats=False, msg="Invalid input action: Invalid argument" ) @@ -3397,12 +3397,12 @@ class TestICEFdir(TestCase): self.check_fdir_rule(stats=False) def test_unsupported_input_set_field(self): - rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tc is 2 / end actions queue index 1 / end" + rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tc is 2 / end actions queue index 1 / mark / end" self.create_fdir_rule(rule, check_stats=False, msg="Bad arguments") self.check_fdir_rule(stats=False) def test_invalid_port(self): - rule = "flow create 2 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end" + rule = "flow create 2 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark / end" self.create_fdir_rule( rule, check_stats=False, msg="No such device: No such device" ) @@ -3411,7 +3411,7 @@ class TestICEFdir(TestCase): def _test_unsupported_pattern(self): # only test with OS default package - rule = "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end" + rule = "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / mark / end" self.create_fdir_rule(rule, check_stats=False) self.check_fdir_rule(stats=False) @@ -3475,22 +3475,22 @@ class TestICEFdir(TestCase): def test_count_for_1_rule(self): rule = [ - "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / count / end", - "flow create 1 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions count / end", + "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark / count / end", + "flow create 1 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions count / mark / end", ] rule_li = self.create_fdir_rule(rule, check_stats=True) out = self.send_pkts_getouput(pkts=MAC_IPV4_PAY["match"]) rfc.check_mark( out, pkt_num=len(MAC_IPV4_PAY["match"]), - check_param={"port_id": 0, "queue": 1}, + check_param={"port_id": 0, "queue": 1, "mark_id": 0}, stats=True, ) out = self.send_pkts_getouput(port_id=1, pkts=MAC_IPV4_PAY["match"]) rfc.check_mark( out, pkt_num=len(MAC_IPV4_PAY["match"]), - check_param={"port_id": 1, "rss": True}, + check_param={"port_id": 1, "rss": True, "mark_id": 0}, stats=True, ) @@ -3498,14 +3498,14 @@ class TestICEFdir(TestCase): rfc.check_mark( out, pkt_num=len(MAC_IPV4_PAY["unmatched"]), - check_param={"port_id": 0, "rss": True}, + check_param={"port_id": 0, "rss": True, "mark_id": 0}, stats=False, ) out = self.send_pkts_getouput(port_id=1, pkts=MAC_IPV4_PAY["unmatched"]) rfc.check_mark( out, pkt_num=len(MAC_IPV4_PAY["unmatched"]), - check_param={"port_id": 1, "rss": True}, + check_param={"port_id": 1, "rss": True, "mark_id": 0}, stats=False, ) self.query_count(1, 1, 0, 0) @@ -3518,14 +3518,14 @@ class TestICEFdir(TestCase): rfc.check_mark( out, pkt_num=len(MAC_IPV4_PAY["match"]), - check_param={"port_id": 0, "rss": True}, + check_param={"port_id": 0, "rss": True, "mark_id": 0}, stats=False, ) out = self.send_pkts_getouput(port_id=1, pkts=MAC_IPV4_PAY["match"]) rfc.check_mark( out, pkt_num=len(MAC_IPV4_PAY["match"]), - check_param={"port_id": 0, "rss": True}, + check_param={"port_id": 0, "rss": True, "mark_id": 0}, stats=False, ) self.check_fdir_rule(stats=False) @@ -3536,14 +3536,14 @@ class TestICEFdir(TestCase): self.verify("Flow rule #0 not found" in out, "query should failed") def test_count_query_identifier_share(self): - rule1 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions queue index 1 / count identifier 0x1234 / end" - rule2 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions rss queues 2 3 end / count identifier 0x1234 / end" + rule1 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions queue index 1 / mark / count identifier 0x1234 / end" + rule2 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions rss queues 2 3 end / mark / count identifier 0x1234 / end" rule3 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.3 / end actions passthru / mark / count identifier 0x1234 / end" rule4 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.4 / end actions mark id 1 / rss / count identifier 0x1234 / end" - rule5 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.5 / end actions queue index 5 / count / end" - rule6 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.6 / end actions drop / count / end" - rule7 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.7 / end actions drop / count identifier 0x1235 / end" - rule8 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.8 / end actions rss / count / end" + rule5 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.5 / end actions queue index 5 / mark / count / end" + rule6 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.6 / end actions drop / mark / count / end" + rule7 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.7 / end actions drop / mark / count identifier 0x1235 / end" + rule8 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.8 / end actions rss / mark / count / end" pkt1 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.1",dst="192.168.0.21") / Raw("x" * 80)' pkt2 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.2",dst="192.168.0.21") / Raw("x" * 80)' @@ -3559,9 +3559,13 @@ class TestICEFdir(TestCase): ) self.verify(all(res), "create rules failed, result: %s" % res) out1 = self.send_pkts_getouput(pkt1, count=10) - rfc.check_mark(out1, pkt_num=10, check_param={"queue": 1}, stats=True) + rfc.check_mark( + out1, pkt_num=10, check_param={"queue": 1, "mark_id": 0}, stats=True + ) out2 = self.send_pkts_getouput(pkt2, count=10) - rfc.check_mark(out2, pkt_num=10, check_param={"queue": [2, 3]}, stats=True) + rfc.check_mark( + out2, pkt_num=10, check_param={"queue": [2, 3], "mark_id": 0}, stats=True + ) out3 = self.send_pkts_getouput(pkt3, count=10) rfc.check_mark( out3, pkt_num=10, check_param={"mark_id": 0, "rss": True}, stats=True @@ -3571,13 +3575,17 @@ class TestICEFdir(TestCase): out4, pkt_num=10, check_param={"mark_id": 1, "rss": True}, stats=True ) out5 = self.send_pkts_getouput(pkt5, count=10) - rfc.check_mark(out5, pkt_num=10, check_param={"queue": 5}, stats=True) + rfc.check_mark( + out5, pkt_num=10, check_param={"queue": 5, "mark_id": 0}, stats=True + ) out6 = self.send_pkts_getouput(pkt6, count=10, drop=True) rfc.check_drop(out6, pkt_num=10, check_param={"port_id": 0}) out7 = self.send_pkts_getouput(pkt7, count=10, drop=True) rfc.check_drop(out7, pkt_num=10, check_param={"port_id": 0}) out8 = self.send_pkts_getouput(pkt8, count=10) - rfc.check_mark(out8, pkt_num=10, check_param={"rss": True}, stats=True) + rfc.check_mark( + out8, pkt_num=10, check_param={"rss": True, "mark_id": 0}, stats=True + ) self.query_count(1, 10, 0, 0) self.query_count(1, 10, 0, 1) @@ -3668,13 +3676,13 @@ class TestICEFdir(TestCase): self.verify("Flow rule #0 not found" in out, "query should failed") def test_max_count_number(self): - pattern = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.{} / end actions drop / count / end" + pattern = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.{} / end actions drop / mark / count / end" rules = [pattern.format(i) for i in range(1, 256)] + [ - "flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 / end actions drop / count / end" + "flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 / end actions drop / mark / count / end" ] res = self.create_fdir_rule(rules, check_stats=True) - rule2 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.1.2 / end actions drop / count / end" + rule2 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.1.2 / end actions drop / mark / count / end" self.create_fdir_rule( rule2, check_stats=False, msg="No free counter found", validate=False ) @@ -3798,8 +3806,8 @@ class TestICEFdir(TestCase): "flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions rss queues 6 7 end / mark id 2 / count identifier 0x1234 / end", "flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss queues 6 7 end / mark id 1 / count / end", "flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions queue index 2 / mark / count / end", - "flow create 1 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / count / end", - "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions drop / count / end", + "flow create 1 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / mark / count / end", + "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions drop / mark / count / end", "flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions queue index 1 / mark id 1 / count identifier 0x1234 / end", ] pkts = [ @@ -4162,11 +4170,15 @@ class TestICEFdir(TestCase): self.check_fdir_rule(stats=True) def tear_down(self): - # destroy all flow rule on port 0 - self.dut.send_command("flow flush 0", timeout=1) - self.dut.send_command("flow flush 1", timeout=1) - self.dut.send_command("clear port stats all", timeout=1) - self.pmd_output.execute_cmd("stop") + try: + # destroy all flow rule on port 0 + self.dut.send_command("flow flush 0", timeout=1) + self.dut.send_command("flow flush 1", timeout=1) + self.dut.send_command("clear port stats all", timeout=1) + self.pmd_output.execute_cmd("stop") + except: + self.dut.kill_all() + self.launch_testpmd_with_mark() def tear_down_all(self): self.dut.kill_all()