test suite reviews and discussions
 help / color / mirror / Atom feed
From: Weiyuan Li <weiyuanx.li@intel.com>
To: dts@dpdk.org
Cc: Weiyuan Li <weiyuanx.li@intel.com>
Subject: [dts][PATCH V1] test_plans/checksum_offload: optimize test plan highlight the check ptypes and flag
Date: Mon, 15 Aug 2022 18:24:32 +0800	[thread overview]
Message-ID: <20220815102432.7306-1-weiyuanx.li@intel.com> (raw)

Optimize test plan list the check ptypes(IP+UDP/TCP/SCTP) and highlight the flag checked.

Signed-off-by: Weiyuan Li <weiyuanx.li@intel.com>
---
 test_plans/checksum_offload_test_plan.rst | 661 +++++++++++++++++++++-
 1 file changed, 637 insertions(+), 24 deletions(-)

diff --git a/test_plans/checksum_offload_test_plan.rst b/test_plans/checksum_offload_test_plan.rst
index 45f081b0..346cca8f 100644
--- a/test_plans/checksum_offload_test_plan.rst
+++ b/test_plans/checksum_offload_test_plan.rst
@@ -190,7 +190,115 @@ Start the packet forwarding::
 Configure the traffic generator to send the multiple packets with the following
 combination: good/bad ip checksum + good/bad udp/tcp checksum.
 
-Check the Rx checksum flags consistent with expected flags.
+Send a packet ptypes is IP/UDP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=int(0x7ca0))/UDP(chksum=int(0x1126))/('X'*50), iface=iface)
+
+   Check the Rx checksum flags consistent with expected flags.
+
+   port=0, mbuf=0x168d06200, pkt_len=88, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=8
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/TCP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=int(0xf19f))/TCP(chksum=int(0x165f))/('X'*50), iface=iface)
+
+   Check the Rx checksum flags consistent with expected flags.
+
+   port=0, mbuf=0x168be5100, pkt_len=100, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/SCTP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=int(0xf127))/SCTP(chksum=int(0x2566b731))/('X'*50), iface=iface)
+
+   Check the Rx checksum flags consistent with expected flags.
+
+   port=0, mbuf=0x168be7600, pkt_len=94, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=132 l4_len=0 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_SCTP_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IPV6/UDP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPv6(src="::1")/UDP(chksum=int(0xf27))/('X'*50), iface=iface)
+
+   Check the Rx checksum flags consistent with expected flags.
+
+   port=0, mbuf=0x168d058c0, pkt_len=108, nb_segs=1:
+   rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=40 m->l4_len=8
+   tx: flags=RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV6
+
+Send a packet ptypes is IPV6/TCP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPv6(src="::1")/TCP(chksum=int(0x9f5f))/('X'*50), iface=iface)
+
+   Check the Rx checksum flags consistent with expected flags.
+
+   port=0, mbuf=0x168d033c0, pkt_len=120, nb_segs=1:
+   rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
+   tx: flags=RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV6
+
+Send a packet ptypes is IP/UDP with a bad IP/UDP checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=0x0)/UDP(chksum=0xf)/('X'*50), iface=iface)
+
+   Check the Rx checksum flags consistent with expected flags.
+
+   port=0, mbuf=0x168d00ec0, pkt_len=88, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=8
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/TCP with a bad IP/TCP checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=0x0)/TCP(chksum=0xf)/('X'*50), iface=iface)
+
+   Check the Rx checksum flags consistent with expected flags.
+
+   port=0, mbuf=0x168cfe9c0, pkt_len=100, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/SCTP with a bad IP/SCTP checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=0x0)/SCTP(chksum=0xf)/('X'*50), iface=iface)
+
+   Check the Rx checksum flags consistent with expected flags.
+
+   port=0, mbuf=0x168cfc4c0, pkt_len=94, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=132 l4_len=0 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_SCTP_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IPV6/UDP with a bad UDP checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPv6(src="::1")/UDP(chksum=0xf)/('X'*50), iface=iface)
+
+   Check the Rx checksum flags consistent with expected flags.
+
+   port=0, mbuf=0x168cf9fc0, pkt_len=108, nb_segs=1:
+   rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=40 m->l4_len=8
+   tx: flags=RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV6
+
+Send a packet ptypes is IPV6/TCP with a bad TCP checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPv6(src="::1")/TCP(chksum=0xf)/('X'*50), iface=iface)
+
+   Check the Rx checksum flags consistent with expected flags.
+
+   port=0, mbuf=0x168cf9fc0, pkt_len=108, nb_segs=1:
+   rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=40 m->l4_len=8
+   tx: flags=RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV6
 
 Test Case: Hardware Checksum Check L4 RX
 ===========================================
@@ -215,13 +323,61 @@ Start the packet forwarding::
     TX queues=1 - TX desc=512 - TX free threshold=0
     TX threshold registers: pthresh=32 hthresh=8 wthresh=8
 
-Send a packet with a good checksum::
+Send a packet ptypes is IP/UDP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP()/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_L4_CKSUM_GOOD in the packet received
+
+   port=0, mbuf=0x2269df8780, pkt_len=96, nb_segs=1:
+   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD  RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP(chksum=0xf)/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_L4_CKSUM_BAD in the packet received
+
+   port=0, mbuf=0x2269df7e40, pkt_len=96, nb_segs=1:
+   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/TCP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/TCP()/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_L4_CKSUM_GOOD in the packet received
+
+   port=0, mbuf=0x2269df8780, pkt_len=96, nb_segs=1:
+   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD  RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/TCP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/TCP(chksum=0xf)/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_L4_CKSUM_BAD in the packet received
+
+   port=0, mbuf=0x2269df7e40, pkt_len=96, nb_segs=1:
+   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/SCTP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/SCTP()/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_L4_CKSUM_GOOD in the packet received
 
    port=0, mbuf=0x2269df8780, pkt_len=96, nb_segs=1:
    rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD  RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
    tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
 
-Send a packet with a bad checksum::
+Send a packet ptypes is IP/SCTP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/SCTP(chksum=0xf)/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_L4_CKSUM_BAD in the packet received
 
    port=0, mbuf=0x2269df7e40, pkt_len=96, nb_segs=1:
    rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
@@ -250,13 +406,61 @@ Start the packet forwarding::
     TX queues=1 - TX desc=512 - TX free threshold=0
     TX threshold registers: pthresh=32 hthresh=8 wthresh=8
 
-Send a packet with a good checksum::
+Send a packet ptypes is IP/UDP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP()/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_IP_CKSUM_GOOD in the packet received
+
+   port=0, mbuf=0x2269df8780, pkt_len=96, nb_segs=1:
+   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD  RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=0xf)/UDP()/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_IP_CKSUM_BAD in the packet received
+
+   port=0, mbuf=0x2269df7e40, pkt_len=96, nb_segs=1:
+   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/TCP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/TCP()/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_IP_CKSUM_GOOD in the packet received
+
+   port=0, mbuf=0x2269df8780, pkt_len=96, nb_segs=1:
+   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD  RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/TCP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=0xf)/TCP()/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_IP_CKSUM_BAD in the packet received
+
+   port=0, mbuf=0x2269df7e40, pkt_len=96, nb_segs=1:
+   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+
+Send a packet ptypes is IP/SCTP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/SCTP()/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_IP_CKSUM_GOOD in the packet received
 
    port=0, mbuf=0x2269df8780, pkt_len=96, nb_segs=1:
    rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD  RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
    tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
 
-Send a packet with a bad checksum::
+Send a packet ptypes is IP/SCTP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=0xf)/SCTP()/('X'*50), iface=iface)
+
+   check the packet received, the flag RTE_MBUF_F_RX_IP_CKSUM_BAD in the packet received
 
    port=0, mbuf=0x2269df7e40, pkt_len=96, nb_segs=1:
    rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
@@ -293,19 +497,421 @@ Start a packet capture on the tester in the background::
 
    # tcpdump -i <iface> -s 65535 -w /tmp/tester/test_hardware_checksum_check_l4_tx_capture.pcap &
 
-Send a packet with a good checksum::
+Send a packet ptypes is IP/UDP with a good checksum::
 
-   port=0, mbuf=0x2269df8780, pkt_len=96, nb_segs=1:
-   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD  RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
-   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP(chksum=0xb161)/Raw(load=b'x'), iface=iface)
 
-Send a packet with a bad checksum::
+   port=0, mbuf=0x168d06200, pkt_len=90, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=8
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4
 
-   port=0, mbuf=0x2269df7e40, pkt_len=96, nb_segs=1:
-   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
-   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP(chksum=0xf)/Raw(load=b'x'), iface=iface)
+
+   port=0, mbuf=0x168d06b40, pkt_len=90, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=8
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/TCP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/TCP(chksum=0x4904)/Raw(load=b'x'), iface=iface)
+
+   port=0, mbuf=0x168d07480, pkt_len=102, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/TCP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/TCP(chksum=0xf)/Raw(load=b'x'), iface=iface)
+
+   port=0, mbuf=0x168be47c0, pkt_len=102, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4
+
+   Inspect the pcap file from the packet capture and verify the checksums.
 
-Inspect the pcap file from the packet capture and verify the checksums.
+Send a packet ptypes is IPV6/UDP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPv6()/UDP(chksum=0xaf62)/Raw(load=b'x'), iface=iface)
+
+   port=0, mbuf=0x168be5100, pkt_len=110, nb_segs=1:
+   rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=40 m->l4_len=8
+   tx: flags=RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV6
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPv6()/UDP(chksum=0xf)/Raw(load=b'x'), iface=iface)
+
+   port=0, mbuf=0x168be5a40, pkt_len=110, nb_segs=1:
+   rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=40 m->l4_len=8
+   tx: flags=RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV6
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/TCP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPv6()/TCP(chksum=0x4705)/Raw(load=b'x'), iface=iface)
+
+   port=0, mbuf=0x168be6380, pkt_len=122, nb_segs=1:
+   rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
+   tx: flags=RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV6
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/TCP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPv6()/TCP(chksum=0xf)/Raw(load=b'x'), iface=iface)
+
+   port=0, mbuf=0x168be6cc0, pkt_len=122, nb_segs=1:
+   rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
+   tx: flags=RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV6
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/UDP/VXLAN/IP/UDP inner UDP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP()/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IP()/UDP(chksum=0x9949)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168be7600, pkt_len=140, nb_segs=1:
+   rx: l2_len=30 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=30 m->l3_len=20 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/UDP/VXLAN/IP/UDP inner UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP()/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IP()/UDP(chksum=0xf)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168be7600, pkt_len=140, nb_segs=1:
+   rx: l2_len=30 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=30 m->l3_len=20 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/UDP/VXLAN/IP/UDP outer UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP(chksum=0xf)/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IP()/UDP()/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168be7600, pkt_len=140, nb_segs=1:
+   rx: l2_len=30 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=30 m->l3_len=20 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/UDP/VXLAN/IP/UDP inter UDP and outer UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP(chksum=0xf)/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IP()/UDP(chksum=0xf)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168be7600, pkt_len=140, nb_segs=1:
+   rx: l2_len=30 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=30 m->l3_len=20 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/UDP/VXLAN/IP/TCP inner TCP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP()/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IP()/TCP(chksum=0x30ec)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168d058c0, pkt_len=152, nb_segs=1:
+   rx: l2_len=30 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=30 m->l3_len=20 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/UDP/VXLAN/IP/TCP inner TCP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP()/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IP()/TCP(chksum=0xf)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168d04f80, pkt_len=152, nb_segs=1:
+   rx: l2_len=30 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=30 m->l3_len=20 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/UDP/VXLAN/IP/TCP outer UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP(chksum=0xf)/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IP()/TCP()/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168d04640, pkt_len=152, nb_segs=1:
+   rx: l2_len=30 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=30 m->l3_len=20 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/UDP/VXLAN/IP/TCP outer UDP and inner TCP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/UDP(chksum=0xf)/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IP()/TCP(chksum=0xf)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168d03d00, pkt_len=152, nb_segs=1:
+   rx: l2_len=30 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=30 m->l3_len=20 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/UDP/VXLAN/IPV6/UDP inner UDP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/UDP()/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IPV6()/UDP(chksum=0x9949)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168d033c0, pkt_len=180, nb_segs=1:
+   rx: l2_len=30 ethertype=86dd l3_len=40 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=86dd outer_l3_len=40
+   tx: m->l2_len=30 m->l3_len=40 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=40
+   tx: flags=RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV6 RTE_MBUF_F_TX_OUTER_IPV6 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/UDP/VXLAN/IPV6/UDP inner UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/UDP()/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IPV6()/UDP(chksum=0xf)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168d02a80, pkt_len=180, nb_segs=1:
+   rx: l2_len=30 ethertype=86dd l3_len=40 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=86dd outer_l3_len=40
+   tx: m->l2_len=30 m->l3_len=40 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=40
+   tx: flags=RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV6 RTE_MBUF_F_TX_OUTER_IPV6 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/UDP/VXLAN/IPV6/UDP outer UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/UDP(chksum=0xf)/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IPV6()/UDP()/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168d02140, pkt_len=180, nb_segs=1:
+   rx: l2_len=30 ethertype=86dd l3_len=40 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=86dd outer_l3_len=40
+   tx: m->l2_len=30 m->l3_len=40 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=40
+   tx: flags=RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV6 RTE_MBUF_F_TX_OUTER_IPV6 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/UDP/VXLAN/IPV6/UDP inter UDP and outer UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/UDP(chksum=0xf)/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IPV6()/UDP(chksum=0xf)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168d01800, pkt_len=180, nb_segs=1:
+   rx: l2_len=30 ethertype=86dd l3_len=40 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=86dd outer_l3_len=40
+   tx: m->l2_len=30 m->l3_len=40 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=40
+   tx: flags=RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV6 RTE_MBUF_F_TX_OUTER_IPV6 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/UDP/VXLAN/IPV6/TCP inner TCP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/UDP()/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IPV6()/TCP(chksum=0x30ec)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168d00ec0, pkt_len=192, nb_segs=1:
+   rx: l2_len=30 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=86dd outer_l3_len=40
+   tx: m->l2_len=30 m->l3_len=40 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=40
+   tx: flags=RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV6 RTE_MBUF_F_TX_OUTER_IPV6 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/UDP/VXLAN/IPV6/TCP inner TCP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/UDP()/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IPV6()/TCP(chksum=0xf)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168d00580, pkt_len=192, nb_segs=1:
+   rx: l2_len=30 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=86dd outer_l3_len=40
+   tx: m->l2_len=30 m->l3_len=40 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=40
+   tx: flags=RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV6 RTE_MBUF_F_TX_OUTER_IPV6 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/UDP/VXLAN/IPV6/TCP outer UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/UDP(chksum=0xf)/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IPV6()/TCP()/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168cffc40, pkt_len=192, nb_segs=1:
+   rx: l2_len=30 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=86dd outer_l3_len=40
+   tx: m->l2_len=30 m->l3_len=40 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=40
+   tx: flags=RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV6 RTE_MBUF_F_TX_OUTER_IPV6 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/UDP/VXLAN/IPV6/TCP outer UDP and inner TCP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/UDP(chksum=0xf)/VXLAN()/
+   Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:00')/IPV6()/TCP(chksum=0xf)/Raw(load=b'Y'), iface=iface)
+
+   port=0, mbuf=0x168cff300, pkt_len=192, nb_segs=1:
+   rx: l2_len=30 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=86dd outer_l3_len=40
+   tx: m->l2_len=30 m->l3_len=40 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=40
+   tx: flags=RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV6 RTE_MBUF_F_TX_OUTER_IPV6 RTE_MBUF_F_TX_TUNNEL_VXLAN RTE_MBUF_F_TX_OUTER_UDP_CKSUM
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/GRE/IP/UDP inner UDP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/GRE()/IP()/UDP(chksum=0x8131)/Raw(load=b'Z'), iface=iface)
+
+   port=0, mbuf=0x168cfe9c0, pkt_len=114, nb_segs=1:
+   rx: l2_len=4 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=4 m->l3_len=20 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_GRE
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/GRE/IP/UDP inner UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/GRE()/IP()/UDP(chksum=0xf)/Raw(load=b'Z'), iface=iface)
+
+   port=0, mbuf=0x168cfe080, pkt_len=114, nb_segs=1:
+   rx: l2_len=4 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=4 m->l3_len=20 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_GRE
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/GRE/IP/TCP inner TCP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/GRE()/IP()/TCP(chksum=0x18d4)/Raw(load=b'Z'), iface=iface)
+
+   port=0, mbuf=0x168cfd740, pkt_len=126, nb_segs=1:
+   rx: l2_len=4 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=4 m->l3_len=20 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_GRE
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/GRE/IP/TCP inner TCP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP()/GRE()/IP()/TCP(chksum=0xf)/Raw(load=b'Z'), iface=iface)
+
+   port=0, mbuf=0x168cfce00, pkt_len=126, nb_segs=1:
+   rx: l2_len=4 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=4 m->l3_len=20 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_GRE
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/GRE/IPV6/UDP inner UDP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/GRE()/IPV6()/UDP(chksum=0x8131)/Raw(load=b'Z'), iface=iface)
+
+   port=0, mbuf=0x168cfe9c0, pkt_len=114, nb_segs=1:
+   rx: l2_len=4 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=4 m->l3_len=20 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_GRE
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/GRE/IPV6/UDP inner UDP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/GRE()/IPV6()/UDP(chksum=0xf)/Raw(load=b'Z'), iface=iface)
+
+   port=0, mbuf=0x168cfe080, pkt_len=114, nb_segs=1:
+   rx: l2_len=4 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=4 m->l3_len=20 m->l4_len=8
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_UDP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_GRE
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/GRE/IPV6/TCP inner TCP with a good checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/GRE()/IPV6()/TCP(chksum=0x18d4)/Raw(load=b'Z'), iface=iface)
+
+   port=0, mbuf=0x168cfd740, pkt_len=126, nb_segs=1:
+   rx: l2_len=4 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=4 m->l3_len=20 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_GRE
+
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IPV6/GRE/IPV6/TCP inner TCP with a bad checksum::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IPV6()/GRE()/IPV6()/TCP(chksum=0xf)/Raw(load=b'Z'), iface=iface)
+
+   port=0, mbuf=0x168cfce00, pkt_len=126, nb_segs=1:
+   rx: l2_len=4 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_BAD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
+   tx: m->l2_len=4 m->l3_len=20 m->l4_len=20
+   tx: m->outer_l2_len=14 m->outer_l3_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4 RTE_MBUF_F_TX_OUTER_IP_CKSUM RTE_MBUF_F_TX_OUTER_IPV4 RTE_MBUF_F_TX_TUNNEL_GRE
+
+   Inspect the pcap file from the packet capture and verify the checksums.
 
 Test Case: Hardware Checksum Check L3 TX
 ===========================================
@@ -328,22 +934,29 @@ Start the packet forwarding::
     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_hardware_checksum_check_l3_tx_capture.pcap &
 
-Send a packet with a good checksum with a 1 in it's payload::
+Send a packet ptypes is IP/TCP with a good checksum with a 1 in it's payload::
 
-   port=0, mbuf=0x2269df8780, pkt_len=96, nb_segs=1:
-   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD  RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
-   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=0x7ccc)/TCP()/Raw(load=b'1'), iface=iface)
 
-Send a packet with a bad checksum with a 0 in it's payload::
+   port=0, mbuf=0x168d06200, pkt_len=60, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4
 
-   port=0, mbuf=0x2269df7e40, pkt_len=96, nb_segs=1:
-   rx: l2_len=18 ethertype=800 l3_len=20 l4_proto=17 l4_len=8 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
-   tx: flags=RTE_MBUF_F_TX_L4_NO_CKSUM RTE_MBUF_F_TX_IPV4
+   Inspect the pcap file from the packet capture and verify the checksums.
+
+Send a packet ptypes is IP/TCP with a bad checksum with a 0 in it's payload::
+
+   sendp(Ether(dst='23:00:00:00:00:00', src='52:00:00:00:00:00')/IP(chksum=0xf)/TCP()/Raw(load=b'1'), iface=iface)
+
+   port=0, mbuf=0x168d06b40, pkt_len=60, nb_segs=1:
+   rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20 flags=RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_BAD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+   tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
+   tx: flags=RTE_MBUF_F_TX_IP_CKSUM RTE_MBUF_F_TX_TCP_CKSUM RTE_MBUF_F_TX_IPV4
 
-Inspect the pcap file from the packet capture and verify the checksums.
+   Inspect the pcap file from the packet capture and verify the checksums.
 
-- 
2.27.0


             reply	other threads:[~2022-08-15 10:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-15 10:24 Weiyuan Li [this message]
2022-08-31  9:26 ` Fu, Qi
2022-09-15  6:34 ` 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=20220815102432.7306-1-weiyuanx.li@intel.com \
    --to=weiyuanx.li@intel.com \
    --cc=dts@dpdk.org \
    /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).