From: Weiyuan Li <weiyuanx.li@intel.com>
To: dts@dpdk.org
Cc: Weiyuan Li <weiyuanx.li@intel.com>,
Lingli Chen <linglix.chen@intel.com>,
Fu@dpdk.org, Qi <qi.fu@intel.com>
Subject: [dts][PATCH V3 1/2] test_plans/checksum_offload: checksum suite script and testplan optimization
Date: Fri, 23 Sep 2022 13:53:20 +0800 [thread overview]
Message-ID: <20220923055321.23361-1-weiyuanx.li@intel.com> (raw)
Optimize the test case name to match test plan, add test case in test
plan to map test suite and delete the cmd "tx_checksum set 0x0 0" using "csum set".
Signed-off-by: Weiyuan Li <weiyuanx.li@intel.com>
---
Tested-by: Lingli Chen <linglix.chen@intel.com>
Acked-by: Fu, Qi <qi.fu@intel.com>
v2:
-modify test plan delete IXIA description.
v3:
-delete case "Validate checksum on the receive packet".
-optimize the case in the test plan enable csum to used "csum set
ip|tcp|udp|sctp hw 0.
-optimzie the test steps of cases in the test plan change from IXIA to
scapy.
test_plans/checksum_offload_test_plan.rst | 177 +++++++++++++---------
1 file changed, 109 insertions(+), 68 deletions(-)
diff --git a/test_plans/checksum_offload_test_plan.rst b/test_plans/checksum_offload_test_plan.rst
index 346cca8f..00db1a74 100644
--- a/test_plans/checksum_offload_test_plan.rst
+++ b/test_plans/checksum_offload_test_plan.rst
@@ -25,28 +25,16 @@ On the TX side:
- IPv6/SCTP checksum insertion by hardware in transmitted packets (sctp
length in 4 bytes).
-RX side, the L3/L4 checksum offload by hardware can be enabled with the
-following command of the ``testpmd`` application::
-
- enable-rx-cksum
-
-TX side, the insertion of a L3/L4 checksum by hardware can be enabled with the
+RX/TX side, the insertion of a L3/L4 checksum by hardware can be enabled with the
following command of the ``testpmd`` application and running in a dedicated
tx checksum mode::
set fwd csum
- tx_checksum set mask port_id
+ csum set ip|tcp|udp|sctp|outer-ip|outer-udp hw|sw port_id
The transmission of packet is done with the ``start`` command of the ``testpmd``
application that will receive packets and then transmit the packet out on all
-configured ports. ``mask`` is used to indicated what hardware checksum
-offload is required on the ``port_id``. Please check the NIC datasheet for the
-corresponding Hardware limits::
-
- bit 0 - insert ip checksum offload if set
- bit 1 - insert udp checksum offload if set
- bit 2 - insert tcp checksum offload if set
- bit 3 - insert sctp checksum offload if set
+configured ports.
Prerequisites
@@ -71,39 +59,6 @@ Set the verbose level to 1 to display information for each received packet::
testpmd> set verbose 1
-Test Case: Validate checksum on the receive packet
-==================================================
-
-Setup the ``csum`` forwarding mode::
-
- testpmd> set fwd csum
- Set csum packet forwarding mode
-
-Start the packet forwarding::
-
- testpmd> start
- csum packet forwarding - CRC stripping disabled - packets/burst=32
- nb forwarding cores=1 - nb forwarding ports=10
- RX queues=1 - RX desc=128 - RX free threshold=64
- RX threshold registers: pthresh=8 hthresh=8 wthresh=4
- TX queues=1 - TX desc=512 - TX free threshold=0
- TX threshold registers: pthresh=32 hthresh=8 wthresh=8
-
-Configure the traffic generator to send the multiple packets with the following
-combination: good/bad ip checksum + good/bad udp/tcp checksum.
-
-Except that SCTP header + payload length must be a multiple of 4 bytes.
-IPv4 + UDP/TCP packet length can range from the minimum length to 1518 bytes.
-
-Then verify that how many packets found with Bad-ipcsum or Bad-l4csum::
-
- testpmd> stop
- ---------------------- Forward statistics for port 0 ----------------------
- RX-packets: 0 RX-dropped: 0 RX-total: 0
- Bad-ipcsum: 0 Bad-l4csum: 0
- TX-packets: 0 TX-dropped: 0 TX-total: 0
- ----------------------------------------------------------------------------
-
Test Case: Insert IPv4/IPv6 UDP/TCP/SCTP checksum on the transmit packet
========================================================================
@@ -113,9 +68,14 @@ Setup the ``csum`` forwarding mode::
testpmd> set fwd csum
Set csum packet forwarding mode
-Enable the IPv4/UDP/TCP/SCTP checksum offload on port 0::
+Start the packet forwarding::
- testpmd> tx_checksum set 0xf 0
+ testpmd> port stop all
+ testpmd> csum set ip hw 0
+ testpmd> csum set udp hw 0
+ testpmd> csum set tcp hw 0
+ testpmd> csum set sctp hw 0
+ testpmd> port start all
testpmd> start
csum packet forwarding - CRC stripping disabled - packets/burst=32
nb forwarding cores=1 - nb forwarding ports=10
@@ -124,17 +84,23 @@ Enable the IPv4/UDP/TCP/SCTP checksum offload on port 0::
TX queues=1 - TX desc=512 - TX free threshold=0
TX threshold registers: pthresh=32 hthresh=8 wthresh=8
-Configure the traffic generator to send the multiple packets for the following
-combination: IPv4/UDP, IPv4/TCP, IPv4/SCTP, IPv6/UDP, IPv6/TCP.
+Start a packet capture on the tester in the background::
+
+ tcpdump -i <iface> -s 65535 -w /tmp/tester/test_checksum_capture.pcap &
-Except that SCTP header + payload length must be a multiple of 4 bytes.
-IPv4 + UDP/TCP packet length can range from the minimum length to 1518 bytes.
+Send the following multiple packets from tester for with scapy
+combination: IPv4/UDP, IPv4/TCP, IPv4/SCTP, IPv6/UDP, IPv6/TCP::
-Then verify that the same number of packet are correctly received on the traffic
-generator side. And IPv4 checksum, TCP checksum, UDP checksum, SCTP CRC32c need
-be validated as pass by the IXIA.
+ sendp([Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/IP(chksum=0x0)/UDP(chksum=0xf)/("X"*46),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/IP(chksum=0x0)/TCP(chksum=0xf)/("X"*46),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/IP(chksum=0x0)/SCTP(chksum=0x0)/("X"*48),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)],
+ iface="ens192f0",count=4,inter=0,verbose=False)
-The IPv4 source address will not be changed by testpmd.
+Then verify that the same number of packet are correctly received on the tester.
+
+Inspect the pcap file from the packet capture and verify the checksums.
Test Case: Do not insert IPv4/IPv6 UDP/TCP checksum on the transmit packet
@@ -145,9 +111,8 @@ Setup the ``csum`` forwarding mode::
testpmd> set fwd csum
Set csum packet forwarding mode
-Disable the IPv4/UDP/TCP/SCTP checksum offload on port 0::
+Start the packet forwarding::
- testpmd> tx_checksum set 0x0 0
testpmd> start
csum packet forwarding - CRC stripping disabled - packets/burst=32
nb forwarding cores=1 - nb forwarding ports=10
@@ -156,18 +121,22 @@ Disable the IPv4/UDP/TCP/SCTP checksum offload on port 0::
TX queues=1 - TX desc=512 - TX free threshold=0
TX threshold registers: pthresh=32 hthresh=8 wthresh=8
-Configure the traffic generator to send the multiple packets for the following
-combination: IPv4/UDP, IPv4/TCP, IPv6/UDP, IPv6/TCP.
+Start a packet capture on the tester in the background::
-IPv4 + UDP/TCP packet length can range from the minimum length to 1518 bytes.
+ tcpdump -i <iface> -s 65535 -w /tmp/tester/test_checksum_capture.pcap &
-Then verify that the same number of packet are correctly received on the traffic
-generator side. And IPv4 checksum, TCP checksum, UDP checksum need
-be validated as pass by the IXIA.
+Send the following multiple packets from tester for with scapy
+combination: IPv4/UDP, IPv4/TCP, IPv6/UDP, IPv6/TCP::
+
+ sendp([Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/IP(src="10.0.0.1",chksum=0x0)/UDP(chksum=0xf)/("X"*46),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/IP(src="10.0.0.1",chksum=0x0)/TCP(chksum=0xf)/("X"*46),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)],
+ iface="ens192f0",count=4,inter=0,verbose=False)
-The first byte of source IPv4 address will be increment by testpmd. The checksum
-is indeed recalculated by software algorithms.
+Then verify that the same number of packet are correctly received on the tester.
+Inspect the pcap file from the packet capture and verify the checksums.
Test Case: Validate RX checksum valid flags on the receive packet
=================================================================
@@ -179,6 +148,12 @@ Setup the ``csum`` forwarding mode::
Start the packet forwarding::
+ testpmd> port stop all
+ testpmd> csum set ip hw 0
+ testpmd> csum set udp hw 0
+ testpmd> csum set tcp hw 0
+ testpmd> csum set sctp hw 0
+ testpmd> port start all
testpmd> start
csum packet forwarding - CRC stripping disabled - packets/burst=32
nb forwarding cores=1 - nb forwarding ports=10
@@ -315,6 +290,12 @@ Setup the ``csum`` forwarding mode::
Start the packet forwarding::
+ testpmd> port stop all
+ testpmd> csum set ip hw 0
+ testpmd> csum set udp hw 0
+ testpmd> csum set tcp hw 0
+ testpmd> csum set sctp hw 0
+ testpmd> port start all
testpmd> start
csum packet forwarding - CRC stripping disabled - packets/burst=32
nb forwarding cores=1 - nb forwarding ports=10
@@ -398,6 +379,13 @@ Setup the ``csum`` forwarding mode::
Start the packet forwarding::
+ testpmd> port stop all
+ testpmd> csum set ip hw 0
+ testpmd> csum set udp hw 0
+ testpmd> csum set tcp hw 0
+ testpmd> csum set sctp hw 0
+ testpmd> csum set 0xf 0
+ testpmd> port start all
testpmd> start
csum packet forwarding - CRC stripping disabled - packets/burst=32
nb forwarding cores=1 - nb forwarding ports=10
@@ -484,6 +472,12 @@ Setup the ``csum`` forwarding mode::
Start the packet forwarding::
+ testpmd> port stop all
+ testpmd> csum set ip hw 0
+ testpmd> csum set udp hw 0
+ testpmd> csum set tcp hw 0
+ testpmd> csum set sctp hw 0
+ testpmd> port start all
testpmd> start
csum packet forwarding - CRC stripping disabled - packets/burst=32
nb forwarding cores=1 - nb forwarding ports=10
@@ -926,6 +920,12 @@ Setup the ``csum`` forwarding mode::
Start the packet forwarding::
+ testpmd> port stop all
+ testpmd> csum set ip hw 0
+ testpmd> csum set udp hw 0
+ testpmd> csum set tcp hw 0
+ testpmd> csum set sctp hw 0
+ testpmd> port start all
testpmd> start
csum packet forwarding - CRC stripping disabled - packets/burst=32
nb forwarding cores=1 - nb forwarding ports=10
@@ -960,3 +960,44 @@ Send a packet ptypes is IP/TCP with a bad checksum with a 0 in it's payload::
Inspect the pcap file from the packet capture and verify the checksums.
+Test Case: checksum offload with vlan
+=====================================
+
+Setup the ``csum`` forwarding mode::
+
+ testpmd> set fwd csum
+ Set csum packet forwarding mode
+
+Enable the IPv4/UDP/TCP/SCTP checksum offload on port 0::
+
+ testpmd> port stop all
+ testpmd> csum set ip hw 0
+ testpmd> csum set udp hw 0
+ testpmd> csum set tcp hw 0
+ testpmd> csum set sctp hw 0
+ testpmd> port start all
+ testpmd> start
+ csum packet forwarding - CRC stripping disabled - packets/burst=32
+ nb forwarding cores=1 - nb forwarding ports=10
+ RX queues=1 - RX desc=128 - RX free threshold=64
+ RX threshold registers: pthresh=8 hthresh=8 wthresh=4
+ TX queues=1 - TX desc=512 - TX free threshold=0
+ TX threshold registers: pthresh=32 hthresh=8 wthresh=8
+
+Start a packet capture on the tester in the background::
+
+ tcpdump -i <iface> -s 65535 -w /tmp/tester/test_checksum_capture.pcap &
+
+Send the following multiple packets from tester for with scapy
+combination: IPv4/UDP, IPv4/TCP, IPv6/UDP, IPv6/TCP::
+
+ sendp([Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/UDP(chksum=0xf)/("X"*46),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/TCP(chksum=0xf)/("X"*46),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/SCTP(chksum=0x0)/("X"*48),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46),
+ Ether(dst="52:00:00:00:00:01", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)],
+ iface="ens192f0",count=4,inter=0,verbose=False)
+
+Then verify that the same number of packet are correctly received on the tester.
+
+Inspect the pcap file from the packet capture and verify the checksums.
\ No newline at end of file
--
2.25.1
next reply other threads:[~2022-09-23 5:53 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-23 5:53 Weiyuan Li [this message]
2022-09-23 5:53 ` [dts][PATCH V3 2/2] tests/checksum_offload: " Weiyuan Li
2022-10-10 3:21 ` lijuan.tu
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=20220923055321.23361-1-weiyuanx.li@intel.com \
--to=weiyuanx.li@intel.com \
--cc=Fu@dpdk.org \
--cc=dts@dpdk.org \
--cc=linglix.chen@intel.com \
--cc=qi.fu@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).