diff mbox series

[V3,1/2] test_plans/checksum_offload: checksum suite script and testplan optimization

Message ID 20220923055321.23361-1-weiyuanx.li@intel.com (mailing list archive)
State Accepted
Headers show
Series [V3,1/2] test_plans/checksum_offload: checksum suite script and testplan optimization | expand

Commit Message

Weiyuan Li Sept. 23, 2022, 5:53 a.m. UTC
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 mbox series

Patch

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