DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 21.05] app/testpmd: count outer IP checksum errors
@ 2021-01-29 22:35 Lance Richardson
  2021-01-31 11:53 ` Wisam Monther
  0 siblings, 1 reply; 8+ messages in thread
From: Lance Richardson @ 2021-01-29 22:35 UTC (permalink / raw)
  To: Wenzhuo Lu, Xiaoyun Li, Bernard Iremonger
  Cc: dev, Ajit Kumar Khaparde, Kalesh Anakkur Purayil

[-- Attachment #1: Type: text/plain, Size: 4817 bytes --]

Count and display outer IP checksum errors in the checksum
forwarder.

Example forwarder stats output:
  RX-packets: 158            RX-dropped: 0             RX-total: 158
  Bad-ipcsum: 48             Bad-l4csum: 48            Bad-outer-l4csum: 6
  Bad-outer-ipcsum: 40
  TX-packets: 0              TX-dropped: 0             TX-total: 0

Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Kalesh Anakkur Purayil <kalesh-anakkur.purayil@broadcom.com>
---
 app/test-pmd/csumonly.c |  5 +++++
 app/test-pmd/testpmd.c  | 11 ++++++++++-
 app/test-pmd/testpmd.h  |  2 ++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
index d813d4fae0..37ed415cee 100644
--- a/app/test-pmd/csumonly.c
+++ b/app/test-pmd/csumonly.c
@@ -814,6 +814,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
 	uint32_t rx_bad_ip_csum;
 	uint32_t rx_bad_l4_csum;
 	uint32_t rx_bad_outer_l4_csum;
+	uint32_t rx_bad_outer_ip_csum;
 	struct testpmd_offload_info info;
 	uint16_t nb_segments = 0;
 	int ret;
@@ -833,6 +834,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
 	rx_bad_ip_csum = 0;
 	rx_bad_l4_csum = 0;
 	rx_bad_outer_l4_csum = 0;
+	rx_bad_outer_ip_csum = 0;
 	gro_enable = gro_ports[fs->rx_port].enable;
 
 	txp = &ports[fs->tx_port];
@@ -862,6 +864,8 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
 			rx_bad_l4_csum += 1;
 		if (rx_ol_flags & PKT_RX_OUTER_L4_CKSUM_BAD)
 			rx_bad_outer_l4_csum += 1;
+		if (rx_ol_flags & PKT_RX_EIP_CKSUM_BAD)
+			rx_bad_outer_ip_csum += 1;
 
 		/* step 1: dissect packet, parsing optional vlan, ip4/ip6, vxlan
 		 * and inner headers */
@@ -1124,6 +1128,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
 	fs->rx_bad_ip_csum += rx_bad_ip_csum;
 	fs->rx_bad_l4_csum += rx_bad_l4_csum;
 	fs->rx_bad_outer_l4_csum += rx_bad_outer_l4_csum;
+	fs->rx_bad_outer_ip_csum += rx_bad_outer_ip_csum;
 
 	inc_tx_burst_stats(fs, nb_tx);
 	if (unlikely(nb_tx < nb_rx)) {
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index c256e719ae..67f60745a0 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -1805,6 +1805,8 @@ fwd_stream_stats_display(streamid_t stream_id)
 		       " Rx- bad outer L4 checksum: %-14"PRIu64"\n",
 			fs->rx_bad_ip_csum, fs->rx_bad_l4_csum,
 			fs->rx_bad_outer_l4_csum);
+		printf(" RX- bad outer IP checksum: %-14"PRIu64"\n",
+			fs->rx_bad_outer_ip_csum);
 	} else {
 		printf("\n");
 	}
@@ -1827,6 +1829,7 @@ fwd_stats_display(void)
 		uint64_t rx_bad_ip_csum;
 		uint64_t rx_bad_l4_csum;
 		uint64_t rx_bad_outer_l4_csum;
+		uint64_t rx_bad_outer_ip_csum;
 	} ports_stats[RTE_MAX_ETHPORTS];
 	uint64_t total_rx_dropped = 0;
 	uint64_t total_tx_dropped = 0;
@@ -1859,6 +1862,8 @@ fwd_stats_display(void)
 		ports_stats[fs->rx_port].rx_bad_l4_csum += fs->rx_bad_l4_csum;
 		ports_stats[fs->rx_port].rx_bad_outer_l4_csum +=
 				fs->rx_bad_outer_l4_csum;
+		ports_stats[fs->rx_port].rx_bad_outer_ip_csum +=
+				fs->rx_bad_outer_ip_csum;
 
 		if (record_core_cycles)
 			fwd_cycles += fs->core_cycles;
@@ -1890,13 +1895,16 @@ fwd_stats_display(void)
 		       "RX-total: %-"PRIu64"\n", stats.ipackets, stats.imissed,
 		       stats.ipackets + stats.imissed);
 
-		if (cur_fwd_eng == &csum_fwd_engine)
+		if (cur_fwd_eng == &csum_fwd_engine) {
 			printf("  Bad-ipcsum: %-14"PRIu64
 			       " Bad-l4csum: %-14"PRIu64
 			       "Bad-outer-l4csum: %-14"PRIu64"\n",
 			       ports_stats[pt_id].rx_bad_ip_csum,
 			       ports_stats[pt_id].rx_bad_l4_csum,
 			       ports_stats[pt_id].rx_bad_outer_l4_csum);
+			printf("  Bad-outer-ipcsum: %-14"PRIu64"\n",
+			       ports_stats[pt_id].rx_bad_outer_ip_csum);
+		}
 		if (stats.ierrors + stats.rx_nombuf > 0) {
 			printf("  RX-error: %-"PRIu64"\n", stats.ierrors);
 			printf("  RX-nombufs: %-14"PRIu64"\n", stats.rx_nombuf);
@@ -1974,6 +1982,7 @@ fwd_stats_reset(void)
 		fs->rx_bad_ip_csum = 0;
 		fs->rx_bad_l4_csum = 0;
 		fs->rx_bad_outer_l4_csum = 0;
+		fs->rx_bad_outer_ip_csum = 0;
 
 		memset(&fs->rx_burst_stats, 0, sizeof(fs->rx_burst_stats));
 		memset(&fs->tx_burst_stats, 0, sizeof(fs->tx_burst_stats));
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 5f23162107..a034dae227 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -137,6 +137,8 @@ struct fwd_stream {
 	uint64_t rx_bad_l4_csum ; /**< received packets has bad l4 checksum */
 	uint64_t rx_bad_outer_l4_csum;
 	/**< received packets has bad outer l4 checksum */
+	uint64_t rx_bad_outer_ip_csum;
+	/**< received packets having bad outer ip checksum */
 	unsigned int gro_times;	/**< GRO operation times */
 	uint64_t     core_cycles; /**< used for RX and TX processing */
 	struct pkt_burst_stats rx_burst_stats;
-- 
2.25.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-02-24 15:38 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-29 22:35 [dpdk-dev] [PATCH 21.05] app/testpmd: count outer IP checksum errors Lance Richardson
2021-01-31 11:53 ` Wisam Monther
2021-02-23 18:35   ` Ferruh Yigit
2021-02-23 18:39     ` Ajit Khaparde
2021-02-23 20:25       ` Thomas Monjalon
2021-02-24 10:12         ` Ferruh Yigit
2021-02-24 15:16           ` Lance Richardson
2021-02-24 15:38             ` Ferruh Yigit

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).