From patchwork Thu Nov 18 07:17:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yu Jiang X-Patchwork-Id: 104501 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 3BA2BA0C45; Thu, 18 Nov 2021 08:18:13 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2D6514114B; Thu, 18 Nov 2021 08:18:13 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 6CA7641143 for ; Thu, 18 Nov 2021 08:18:11 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="320346618" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="320346618" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 23:18:10 -0800 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="495260376" Received: from unknown (HELO localhost.localdomain) ([10.240.183.163]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-SHA; 17 Nov 2021 23:18:08 -0800 From: Yu Jiang To: yuan.peng@intel.com, dts@dpdk.org Cc: Yu Jiang Subject: [dts][PATCH V3 1/3] test_plans/fdir: move case:fdir for Control levels of FDir match reporting to generic_flow_api Date: Thu, 18 Nov 2021 15:17:44 +0800 Message-Id: <1637219866-13785-2-git-send-email-yux.jiang@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1637219866-13785-1-git-send-email-yux.jiang@intel.com> References: <1637219866-13785-1-git-send-email-yux.jiang@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 move plan for case: Control levels of FDir match reporting to generic_flow_api Signed-off-by: Yu Jiang --- test_plans/fdir_test_plan.rst | 134 ------------------------------------------ 1 file changed, 134 deletions(-) diff --git a/test_plans/fdir_test_plan.rst b/test_plans/fdir_test_plan.rst index dee03c3..72ac320 100644 --- a/test_plans/fdir_test_plan.rst +++ b/test_plans/fdir_test_plan.rst @@ -199,140 +199,6 @@ are free to be used is equal to 8192 (8192 * 32B = 256KB).:: ######################################################################## -Test case: Control levels of FDir match reporting -================================================= - -The status of FDir filter matching for each packet can be reported by the -hardware through the RX descriptor of each received packet, and this information -is copied into the packet mbuf, that can be examined by the application. - -There are three different reporting modes, that can be set in testpmd using the -``--pkt-filter-report-hash`` command line argument: - - -Sub-case: ``--pkt-filter-report-hash=none`` mode ------------------------------------------------- - -In this mode FDir reporting mode, matches are never reported. -Start the ``testpmd`` application as follows:: - - ./testpmd -c 0xf -- -i --portmask=0x1 --nb-cores=2 --rxq=2 --txq=2 - --disable-rss --pkt-filter-mode=perfect --pkt-filter-report-hash=none - testpmd> set verbose 1 - testpmd> set fwd rxonly - testpmd> start - -Send the ``p_udp`` packet with Scapy on the traffic generator and check that no -FDir information is printed:: - - testpmd> port 0/queue 0: received 1 packets - src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1 - PKT_RX_IP_CKSUM - PKT_RX_IPV4_HDR - -Add a perfect filter to match the ``p_udp`` packet, and send the packet again. -No Dir information is printed, but it can be seen that the packet went to queue -1:: - - testpmd> add_perfect_filter 0 udp src 192.168.0.1 1024 dst 192.168.0.2 1024 - flexbytes 0x800 vlan 0 queue 1 soft 0x14 - testpmd> port 0/queue 1: received 1 packets - src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1 - PKT_RX_IP_CKSUM - PKT_RX_IPV4_HDR - - -Sub-case: ``--pkt-filter-report-hash=match`` mode -------------------------------------------------- - -In this mode FDir reporting mode, FDir information is printed for packets that -match a filter. -Start the ``testpmd`` application as follows:: - - ./testpmd -c 0xf -- -i --portmask=0x1 --nb-cores=2 --rxq=2 --txq=2 --disable-rss - --pkt-filter-mode=perfect --pkt-filter-report-hash=match - testpmd> set verbose 1 - testpmd> set fwd rxonly - testpmd> start - -Send the ``p_udp`` packet with Scapy on the traffic generator and check that no -FDir information is printed:: - - testpmd> port 0/queue 0: received 1 packets - src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1 - PKT_RX_IP_CKSUM - PKT_RX_IPV4_HDR - -Add a perfect filter to match the ``p_udp`` packet, and send the packet again. -This time, the match is indicated (``PKT_RX_PKT_RX_FDIR``), and its details -(hash, id) printed :: - - testpmd> add_perfect_filter 0 udp src 192.168.0.1 1024 dst 192.168.0.2 1024 - flexbytes 0x800 vlan 0 queue 1 soft 0x14 - testpmd> port 0/queue 1: received 1 packets - src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - -nb_segs=1 - FDIR hash=0x43c - FDIR id=0x14 - PKT_RX_PKT_RX_FDIR - PKT_RX_IP_CKSUM - PKT_RX_IPV4_HDR - -Update the perfect filter to match the ``p_udp1`` packet, and send the packet again. -This time, the match is indicated (``PKT_RX_PKT_RX_FDIR``), and its details -(hash, id) printed :: - - testpmd> add_perfect_filter 0 udp src 192.168.1.1 1024 dst 192.168.1.2 0 - flexbytes 0x800 vlan 0 queue 1 soft 0x14 - testpmd> port 0/queue 1: received 1 packets - src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - -nb_segs=1 - FDIR hash=0x43c - FDIR id=0x14 - PKT_RX_PKT_RX_FDIR - PKT_RX_IP_CKSUM - PKT_RX_IPV4_HDR - -Remove the perfect filter match the ``p_udp1`` and ``p_udp`` packets, and send the packet again. -Check that no FDir information is printed:: - - testpmd> port 0/queue 0: received 1 packets - src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - nb_segs=1 - PKT_RX_IP_CKSUM - PKT_RX_IPV4_HDR - -Sub-case: ``--pkt-filter-report-hash=always`` mode --------------------------------------------------- - -In this mode FDir reporting mode, FDir information is printed for every received -packet. -Start the ``testpmd`` application as follows:: - - ./testpmd -c 0xf -- -i --portmask=0x1 --nb-cores=2 --rxq=2 --txq=2 --disable-rss - --pkt-filter-mode=perfect --pkt-filter-report-hash=always - testpmd> set verbose 1 - testpmd> set fwd rxonly - testpmd> start - -Send the ``p_udp`` packet with Scapy on the traffic generator and check the -output (FDIR id=0x0):: - - testpmd> port 0/queue 0: received 1 packets - src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - - nb_segs=1 - FDIR hash=0x43c - FDIR id=0x0 - PKT_RX_PKT_RX_FDIR - PKT_RX_IP_CKSUM - PKT_RX_IPV4_HDR - -Add a perfect filter to match the ``p_udp`` packet, and send the packet again. -This time, the filter ID is different, and the packet goes to queue 1 :: - - testpmd> add_perfect_filter 0 udp src 192.168.0.1 1024 dst 192.168.0.2 1024 - flexbytes 0x800 vlan 0 queue 1 soft 0x14 - testpmd> port 0/queue 1: received 1 packets - src=00:1B:21:53:1F:14 - dst=00:1B:21:91:3D:2C - type=0x0800 - length=60 - - nb_segs=1 - FDIR hash=0x43c - FDIR id=0x14 - PKT_RX_PKT_RX_FDIR - PKT_RX_IP_CKSUM - PKT_RX_IPV4_HDR - - Test case: FDir signature matching mode ======================================= From patchwork Thu Nov 18 07:17:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yu Jiang X-Patchwork-Id: 104503 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 5702EA0C41; Thu, 18 Nov 2021 08:18:15 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5286E41150; Thu, 18 Nov 2021 08:18:15 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 7B87A41143 for ; Thu, 18 Nov 2021 08:18:13 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="320346622" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="320346622" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 23:18:12 -0800 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="495260385" Received: from unknown (HELO localhost.localdomain) ([10.240.183.163]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-SHA; 17 Nov 2021 23:18:10 -0800 From: Yu Jiang To: yuan.peng@intel.com, dts@dpdk.org Cc: Yu Jiang Subject: [dts][PATCH V3 2/3] test_plans/generic_flow_api: add case:fdir for Control levels of FDir match reporting Date: Thu, 18 Nov 2021 15:17:45 +0800 Message-Id: <1637219866-13785-3-git-send-email-yux.jiang@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1637219866-13785-1-git-send-email-yux.jiang@intel.com> References: <1637219866-13785-1-git-send-email-yux.jiang@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 add fdir's plan: IXGBE fdir for Control levels of FDir match reporting Signed-off-by: Yu Jiang --- test_plans/generic_flow_api_test_plan.rst | 118 ++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/test_plans/generic_flow_api_test_plan.rst b/test_plans/generic_flow_api_test_plan.rst index a07b809..d6a6a94 100644 --- a/test_plans/generic_flow_api_test_plan.rst +++ b/test_plans/generic_flow_api_test_plan.rst @@ -1088,6 +1088,124 @@ Test case: IXGBE fdir for mac/vlan(support by x540, x552, x550) testpmd> flow flush 0 testpmd> flow list 0 +Test case: IXGBE fdir for Control levels of FDir match reporting(supported by 82599) +==================================================================================== + +The status of FDir filter matching for each packet can be reported by the +hardware through the RX descriptor of each received packet, and this information +is copied into the packet mbuf, that can be examined by the application. + +There are three different reporting modes, that can be set in testpmd using the +``--pkt-filter-report-hash`` command line argument: + + +Sub-case: ``--pkt-filter-report-hash=none`` mode +------------------------------------------------ + +In this mode FDir reporting mode, matches are never reported. +Start the ``testpmd`` application as follows:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -- -i --rxq=4 --txq=4 --disable-rss --pkt-filter-mode=perfect --pkt-filter-report-hash=none + testpmd> set verbose 1 + testpmd> set fwd rxonly + testpmd> start + +Send the matched packet with Scapy on the traffic generator and check that no FDir information is printed:: + + packet: pkt0=Ether(dst="90:E2:BA:AC:99:FC")/IP(src="192.168.0.1", dst="192.168.0.2")/Raw('x' * 20) + testpmd> port 0/queue 0: received 1 packets + src=00:0C:29:B3:0E:82 - dst=90:E2:BA:AC:99:FC - type=0x0800 - length=60 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0 + ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN + +Add flow filter rule, and send the matched packet again. +No Dir information is printed, but it can be seen that the packet goes to queue 1:: + + testpmd> flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions queue index 1 / mark id 1 / end + testpmd> port 0/queue 1: received 1 packets + src=00:0C:29:B3:0E:82 - dst=90:E2:BA:AC:99:FC - type=0x0800 - length=60 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x1 + ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN + testpmd> quit + +Sub-case: ``--pkt-filter-report-hash=match`` mode +------------------------------------------------- + +In this mode FDir reporting mode, FDir information is printed for packets that match a filter. +Start the ``testpmd`` application as follows:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -- -i --rxq=4 --txq=4 --disable-rss --pkt-filter-mode=perfect --pkt-filter-report-hash=match + testpmd> set verbose 1 + testpmd> set fwd rxonly + testpmd> start + +Send pkt0 packet with Scapy on the traffic generator and check that no FDir information is printed:: + + packet: pkt0=Ether(dst="90:E2:BA:AC:99:FC")/IP(src="192.168.0.1", dst="192.168.0.2")/Raw('x' * 20) + testpmd> port 0/queue 0: received 1 packets + src=00:0C:29:B3:0E:82 - dst=90:E2:BA:AC:99:FC - type=0x0800 - length=60 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0 + ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN + +Add flow filter rule, and send the pkt0 packet again. +This time, the match is indicated (``RTE_MBUF_F_RX_FDIR``), and its details (hash, id) printed :: + + testpmd> flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions queue index 1 / mark id 1 / end + testpmd> port 0/queue 1: received 1 packets + src=00:0C:29:B3:0E:82 - dst=90:E2:BA:AC:99:FC - type=0x0800 - length=60 - nb_segs=1 - FDIR matched hash=0x2f3 ID=0x1 - hw ptype: L2_ETHER L3_IPV4 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x1 + ol_flags: RTE_MBUF_F_RX_FDIR RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN + +Add flow filter rule by using different src,dst, and send the matched pkt1 packet again. +This time, the match is indicated (``RTE_MBUF_F_RX_FDIR``), and its details (hash, id) printed :: + + packet: pkt1=Ether(dst="90:E2:BA:AC:99:FC")/IP(src="192.168.1.1", dst="192.168.1.2")/Raw('x' * 20) + testpmd> flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions queue index 2 / mark id 2 / end + testpmd> port 0/queue 2: received 1 packets + src=00:0C:29:B3:0E:82 - dst=90:E2:BA:AC:99:FC - type=0x0800 - length=64 - nb_segs=1 - FDIR matched hash=0x2f3 ID=0x2 - hw ptype: L2_ETHER L3_IPV4 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x2 + ol_flags: RTE_MBUF_F_RX_FDIR RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN + +Remove rule1 and send the matched pkt0 packet again. Check that no FDir information is printed:: + + testpmd> flow destroy 0 rule 0 + Flow rule #0 destroyed + testpmd> port 0/queue 0: received 1 packets + src=00:0C:29:B3:0E:82 - dst=90:E2:BA:AC:99:FC - type=0x0800 - length=60 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0 + ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN + +Remove rule2, and send the match pkt1 packet again. Check that no FDir information is printed:: + + testpmd> flow destroy 0 rule 1 + Flow rule #1 destroyed + testpmd> port 0/queue 0: received 1 packets + src=00:0C:29:B3:0E:82 - dst=90:E2:BA:AC:99:FC - type=0x0800 - length=60 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0 + ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN + testpmd> quit + +Sub-case: ``--pkt-filter-report-hash=always`` mode +-------------------------------------------------- + +In this mode FDir reporting mode, FDir information is printed for every received packet. +Start the ``testpmd`` application as follows:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -- -i --rxq=4 --txq=4 --disable-rss --pkt-filter-mode=perfect --pkt-filter-report-hash=always + testpmd> set verbose 1 + testpmd> set fwd rxonly + testpmd> start + + +Send matched pkt0 packet with Scapy on the traffic generator and check the output (FDIR id=0x0):: + + packet: pkt0=Ether(dst="90:E2:BA:AC:99:FC")/IP(src="192.168.0.1", dst="192.168.0.2")/Raw('x' * 20) + testpmd> port 0/queue 0: received 1 packets + src=00:0C:29:B3:0E:82 - dst=90:E2:BA:AC:99:FC - type=0x0800 - length=60 - nb_segs=1 - FDIR matched hash=0x2f3 ID=0x0 - hw ptype: L2_ETHER L3_IPV4 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0 + ol_flags: RTE_MBUF_F_RX_FDIR RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN + +Add flow filter rule, and send the matched pkt0 packet again. +This time, the filter ID is different, and the packet goes to queue 1 :: + + testpmd> flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions queue index 1 / mark id 1 / end + testpmd> port 0/queue 1: received 1 packets + src=00:0C:29:B3:0E:82 - dst=90:E2:BA:AC:99:FC - type=0x0800 - length=60 - nb_segs=1 - FDIR matched hash=0x2f3 ID=0x1 - hw ptype: L2_ETHER L3_IPV4 - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x1 + ol_flags: RTE_MBUF_F_RX_FDIR RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN + testpmd> quit + Test case: IXGBE fdir for tunnel (vxlan and nvgre)(support by x540, x552, x550) =============================================================================== From patchwork Thu Nov 18 07:17:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yu Jiang X-Patchwork-Id: 104504 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 79D28A0C41; Thu, 18 Nov 2021 08:18:17 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 704664114F; Thu, 18 Nov 2021 08:18:17 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 243B441143 for ; Thu, 18 Nov 2021 08:18:14 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="320346624" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="320346624" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 23:18:14 -0800 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="495260395" Received: from unknown (HELO localhost.localdomain) ([10.240.183.163]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-SHA; 17 Nov 2021 23:18:12 -0800 From: Yu Jiang To: yuan.peng@intel.com, dts@dpdk.org Cc: Yu Jiang Subject: [dts][PATCH V3 3/3] tests/generic_flow_api: add case test_fdir_for_match_report Date: Thu, 18 Nov 2021 15:17:46 +0800 Message-Id: <1637219866-13785-4-git-send-email-yux.jiang@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1637219866-13785-1-git-send-email-yux.jiang@intel.com> References: <1637219866-13785-1-git-send-email-yux.jiang@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 add case test_fdir_for_match_report Signed-off-by: Yu Jiang Acked-by: Peng, Yuan --- tests/TestSuite_generic_flow_api.py | 113 +++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 2 deletions(-) diff --git a/tests/TestSuite_generic_flow_api.py b/tests/TestSuite_generic_flow_api.py index e6b04ab..269b6c8 100644 --- a/tests/TestSuite_generic_flow_api.py +++ b/tests/TestSuite_generic_flow_api.py @@ -54,6 +54,7 @@ from framework.project_dpdk import DPDKdut from framework.settings import DRIVERS, HEADER_SIZE from framework.test_case import TestCase from framework.virt_dut import VirtDut +from framework.test_case import check_supported_nic MAX_VLAN = 4095 MAX_QUEUE = 15 @@ -158,9 +159,10 @@ class TestGeneric_flow_api(TestCase): """ return 1024 * queue_num + 512 - def verify_result(self, pf_vf, expect_rxpkts, expect_queue, verify_mac): + def verify_result(self, pf_vf, expect_rxpkts, expect_queue, verify_mac, check_fdir=''): """ verify the packet to the expected queue or be dropped + : check_fdir=[exist|non-exist] """ # self.tester.scapy_execute() # time.sleep(2) @@ -217,12 +219,39 @@ class TestGeneric_flow_api(TestCase): queue_index = len(m) - 1 curr_queue = int(m[queue_index][len("port 0/queue"):]) self.verify(int(expect_queue) == curr_queue, "the actual queue doesn't equal to the expected queue.") - + if check_fdir == 'exist': + self.verify("RTE_MBUF_F_RX_FDIR" in out_pf, 'FDIR information should be printed.') + elif check_fdir == 'non-exist': + self.verify("FDIR" not in out_pf, 'FDIR information should not be printed.') self.dut.send_expect("start", "testpmd> ") if self.vf_flag == 1: self.session_secondary.send_expect("start", "testpmd> ") self.session_third.send_expect("start", "testpmd> ") + return out_pf + + def launch_start_testpmd(self, queue='', pkt_filter_mode='', report_hash='', disable_rss=False, fwd='', verbose=''): + """ + Launch and start testpmd + """ + param = '' + eal_param = '' + if queue: + param += '--rxq={} --txq={} '.format(queue, queue) + if pkt_filter_mode: + param += '--pkt-filter-mode={} '.format(pkt_filter_mode) + if disable_rss: + param += '--disable-rss ' + if report_hash: + param += '--pkt-filter-report-hash={} '.format(report_hash) + self.pmdout.start_testpmd("{}".format(self.cores), param=param, eal_param=eal_param) + if fwd: + self.pmdout.execute_cmd('set fwd rxonly', ) + if verbose: + self.pmdout.execute_cmd('set verbose 1') + self.pmdout.execute_cmd('start') + self.pmdout.execute_cmd('show port info all') + self.pmdout.wait_link_status_up(self.dut_ports[0]) def compare_memory_rules(self, expectedRules): """ @@ -2664,6 +2693,86 @@ class TestGeneric_flow_api(TestCase): else: self.verify(False, "%s not support this test" % self.nic) + @check_supported_nic(["niantic"]) + def test_fdir_for_match_report(self): + """ + Test case: IXGBE fdir for Control levels of FDir match reporting + only supported by ixgbe + """ + fdir_scanner = re.compile("FDIR matched hash=(0x\w+) ID=(0x\w+)") + pkt0 = 'Ether(dst="{}")/IP(src="192.168.0.1", dst="192.168.0.2")/Raw("x" * 20)'.format(self.pf_mac) + pkt1 = 'Ether(dst="{}")/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 20)'.format(self.pf_mac) + rule0 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions queue index 1 / mark id 1 / end" + rule1 = "flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions queue index 2 / mark id 2 / end" + + self.logger.info("Sub-case1: ``--pkt-filter-report-hash=none`` mode") + pkt_filter_report_hash = "none" + self.launch_start_testpmd(queue=MAX_QUEUE + 1, pkt_filter_mode='perfect', report_hash=pkt_filter_report_hash, + disable_rss=True, fwd='rxonly', verbose='1') + + # Send the matched packet with Scapy on the traffic generator and check that no FDir information is printed + self.sendpkt(pktstr=pkt0) + self.verify_result("pf", expect_rxpkts="1", expect_queue="0", verify_mac=self.pf_mac, check_fdir="non-exist") + + # Add flow filter rule, and send the matched packet again. + # No FDir information is printed, but it can be seen that the packet went to queue 1 + self.pmdout.execute_cmd(rule0) + self.sendpkt(pktstr=pkt0) + self.verify_result("pf", expect_rxpkts="1", expect_queue="1", verify_mac=self.pf_mac, check_fdir="non-exist") + self.pmdout.quit() + + self.logger.info("Sub-case2: ``--pkt-filter-report-hash=match`` mode") + pkt_filter_report_hash = "match" + self.launch_start_testpmd(queue=MAX_QUEUE + 1, pkt_filter_mode='perfect', report_hash=pkt_filter_report_hash, + disable_rss=True, fwd='rxonly', verbose='1') + + # Send the matched packet with Scapy on the traffic generator and check that no FDir information is printed + self.sendpkt(pktstr=pkt0) + self.verify_result("pf", expect_rxpkts="1", expect_queue="0", verify_mac=self.pf_mac, check_fdir="non-exist") + + # Add flow filter rule, and send the matched packet again. + # the match is indicated (``RTE_MBUF_F_FDIR``), and its details (hash, id) printed + self.pmdout.execute_cmd(rule0) + self.sendpkt(pktstr=pkt0) + self.verify_result("pf", expect_rxpkts="1", expect_queue="1", verify_mac=self.pf_mac, check_fdir="exist") + + # Add flow filter rule by using different scr,dst, and send the matched pkt1 packet again. + # the match is indicated (``RTE_MBUF_F_FDIR``), and its details (hash, id) printed + self.pmdout.execute_cmd(rule1) + self.sendpkt(pktstr=pkt1) + self.verify_result("pf", expect_rxpkts="1", expect_queue="2", verify_mac=self.pf_mac, check_fdir="exist") + + # Remove rule1 and send the matched pkt0 packet again. Check that no FDir information is printed + self.pmdout.execute_cmd('flow destroy 0 rule 0') + self.sendpkt(pktstr=pkt0) + self.verify_result("pf", expect_rxpkts="1", expect_queue="0", verify_mac=self.pf_mac, check_fdir="non-exist") + + # Remove rule2, and send the match pkt1 packet again. Check that no FDir information is printed + self.pmdout.execute_cmd('flow destroy 0 rule 1') + self.sendpkt(pktstr=pkt1) + self.verify_result("pf", expect_rxpkts="1", expect_queue="0", verify_mac=self.pf_mac, check_fdir="non-exist") + self.pmdout.quit() + + self.logger.info("Sub-case3: ``--pkt-filter-report-hash=always`` mode") + pkt_filter_report_hash = "always" + self.launch_start_testpmd(queue=MAX_QUEUE + 1, pkt_filter_mode='perfect', report_hash=pkt_filter_report_hash, + disable_rss=True, fwd='rxonly', verbose='1') + + # Send matched pkt0 packet with Scapy on the traffic generator and check the output (FDIR id=0x0) + self.sendpkt(pktstr=pkt0) + out1 = self.verify_result("pf", expect_rxpkts="1", expect_queue="0", verify_mac=self.pf_mac, check_fdir="exist") + + # Add flow filter rule, and send the matched pkt0 packet again. + # the filter ID is different, and the packet goes to queue 1Add flow filter rule, and send the matched packet again. + self.pmdout.execute_cmd(rule0) + self.sendpkt(pktstr=pkt0) + out2 = self.verify_result("pf", expect_rxpkts="1", expect_queue="1", verify_mac=self.pf_mac, check_fdir="exist") + + # check fdir id is different + self.logger.info("FDIR ID1=" + fdir_scanner.search(out1).group(0) + "; FDIR ID2=" + fdir_scanner.search(out2).group(0)) + self.verify(fdir_scanner.search(out1).group(0) != fdir_scanner.search(out2).group(0), + 'Sub-case3.3: FDIR ID should be different') + def tear_down(self): """ Run after each test case.