From: Yu Jiang <yux.jiang@intel.com>
To: yuan.peng@intel.com, dts@dpdk.org
Cc: Yu Jiang <yux.jiang@intel.com>
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 [thread overview]
Message-ID: <1637219866-13785-3-git-send-email-yux.jiang@intel.com> (raw)
In-Reply-To: <1637219866-13785-1-git-send-email-yux.jiang@intel.com>
add fdir's plan: IXGBE fdir for Control levels of FDir match reporting
Signed-off-by: Yu Jiang <yux.jiang@intel.com>
---
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
next prev parent reply other threads:[~2021-11-18 7:18 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-18 7:17 [dts][PATCH V3 0/3] tests/generic_flow_api: add fdir's case Yu Jiang
2021-11-18 7:17 ` [dts][PATCH V3 1/3] test_plans/fdir: move case:fdir for Control levels of FDir match reporting to generic_flow_api Yu Jiang
2021-11-18 7:17 ` Yu Jiang [this message]
2021-11-18 7:17 ` [dts][PATCH V3 3/3] tests/generic_flow_api: add case test_fdir_for_match_report Yu Jiang
2021-11-23 2:33 ` Peng, Yuan
2021-11-23 14:25 ` Tu, Lijuan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1637219866-13785-3-git-send-email-yux.jiang@intel.com \
--to=yux.jiang@intel.com \
--cc=dts@dpdk.org \
--cc=yuan.peng@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).