From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0B184A0C56; Fri, 5 Nov 2021 03:49:54 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DDE2441123; Fri, 5 Nov 2021 03:49:53 +0100 (CET) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mails.dpdk.org (Postfix) with ESMTP id 65C9D410E9 for ; Fri, 5 Nov 2021 03:49:52 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10158"; a="219031029" X-IronPort-AV: E=Sophos;i="5.87,210,1631602800"; d="scan'208";a="219031029" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Nov 2021 19:49:52 -0700 X-IronPort-AV: E=Sophos;i="5.87,210,1631602800"; d="scan'208";a="501790619" Received: from unknown (HELO localhost.localdomain) ([10.240.183.163]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-SHA; 04 Nov 2021 19:49:50 -0700 From: Yu Jiang To: yuan.peng@intel.com, dts@dpdk.org Cc: Yu Jiang Date: Fri, 5 Nov 2021 10:49:24 +0800 Message-Id: <1636080565-26720-3-git-send-email-yux.jiang@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1636080565-26720-1-git-send-email-yux.jiang@intel.com> References: <1636080565-26720-1-git-send-email-yux.jiang@intel.com> Subject: [dts] [PATCH V2 2/3] test_plans/generic_flow_api: add case: fdir for Control levels of FDir match reporting 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 Sender: "dts" 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) =============================================================================== -- 2.7.4