DPDK patches and discussions
 help / color / mirror / Atom feed
From: Dharmik Thakkar <dharmik.thakkar@arm.com>
To: Wenzhuo Lu <wenzhuo.lu@intel.com>,
	Beilei Xing <beilei.xing@intel.com>,
	Bernard Iremonger <bernard.iremonger@intel.com>
Cc: dev@dpdk.org, nd@arm.com, Dharmik Thakkar <dharmik.thakkar@arm.com>
Subject: [dpdk-dev] [PATCH 3/6] app/testpmd: add record-burst-stats runtime config
Date: Tue, 14 Jul 2020 16:51:05 -0500	[thread overview]
Message-ID: <20200714215108.22437-4-dharmik.thakkar@arm.com> (raw)
In-Reply-To: <20200714215108.22437-1-dharmik.thakkar@arm.com>

Convert CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS to a
runtime configuration.

Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
Tested-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
---
 app/test-pmd/5tswap.c     |  8 ++-----
 app/test-pmd/cmdline.c    | 46 +++++++++++++++++++++++++++++++++++++++
 app/test-pmd/config.c     |  6 +++++
 app/test-pmd/csumonly.c   |  8 ++-----
 app/test-pmd/flowgen.c    |  4 +---
 app/test-pmd/icmpecho.c   |  8 ++-----
 app/test-pmd/iofwd.c      |  8 ++-----
 app/test-pmd/macfwd.c     |  8 ++-----
 app/test-pmd/macswap.c    |  8 ++-----
 app/test-pmd/parameters.c |  7 +++++-
 app/test-pmd/rxonly.c     |  4 +---
 app/test-pmd/testpmd.c    | 33 ++++++++++++++--------------
 app/test-pmd/testpmd.h    | 20 +++++++++++++----
 app/test-pmd/txonly.c     |  4 +---
 14 files changed, 106 insertions(+), 66 deletions(-)

diff --git a/app/test-pmd/5tswap.c b/app/test-pmd/5tswap.c
index 04f035bb450f..d9026ce86556 100644
--- a/app/test-pmd/5tswap.c
+++ b/app/test-pmd/5tswap.c
@@ -117,9 +117,7 @@ pkt_burst_5tuple_swap(struct fwd_stream *fs)
 	if (unlikely(nb_rx == 0))
 		return;
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->rx_burst_stats.pkt_burst_spread[nb_rx]++;
-#endif
+	inc_rx_burst_stats(fs, nb_rx);
 
 	fs->rx_packets += nb_rx;
 	txp = &ports[fs->tx_port];
@@ -178,9 +176,7 @@ pkt_burst_5tuple_swap(struct fwd_stream *fs)
 		}
 	}
 	fs->tx_packets += nb_tx;
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->tx_burst_stats.pkt_burst_spread[nb_tx]++;
-#endif
+	inc_tx_burst_stats(fs, nb_tx);
 	if (unlikely(nb_tx < nb_rx)) {
 		fs->fwd_dropped += (nb_rx - nb_tx);
 		do {
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 1f30a9021500..6235fa0074d4 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -532,6 +532,9 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"set record-core-cycles on|off\n"
 			"    Set the option to enable measurement of CPU cycles.\n"
 
+			"set record-burst-stats on|off\n"
+			"    Set the option to enable display of RX and TX bursts.\n"
+
 			"set port (port_id) vf (vf_id) rx|tx on|off\n"
 			"    Enable/Disable a VF receive/tranmit from a port\n\n"
 
@@ -8380,6 +8383,48 @@ cmdline_parse_inst_t cmd_set_record_core_cycles = {
 	},
 };
 
+/* *** SET OPTION TO ENABLE DISPLAY OF RX AND TX BURSTS *** */
+struct cmd_set_record_burst_stats_result {
+	cmdline_fixed_string_t keyword;
+	cmdline_fixed_string_t name;
+	cmdline_fixed_string_t on_off;
+};
+
+static void
+cmd_set_record_burst_stats_parsed(void *parsed_result,
+			__rte_unused struct cmdline *cl,
+			__rte_unused void *data)
+{
+	struct cmd_set_record_burst_stats_result *res;
+	uint16_t on_off = 0;
+
+	res = parsed_result;
+	on_off = !strcmp(res->on_off, "on") ? 1 : 0;
+	set_record_burst_stats(on_off);
+}
+
+cmdline_parse_token_string_t cmd_set_record_burst_stats_keyword =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_record_burst_stats_result,
+				 keyword, "set");
+cmdline_parse_token_string_t cmd_set_record_burst_stats_name =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_record_burst_stats_result,
+				 name, "record-burst-stats");
+cmdline_parse_token_string_t cmd_set_record_burst_stats_on_off =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_record_burst_stats_result,
+				 on_off, "on#off");
+
+cmdline_parse_inst_t cmd_set_record_burst_stats = {
+	.f = cmd_set_record_burst_stats_parsed,
+	.data = NULL,
+	.help_str = "set record-burst-stats on|off",
+	.tokens = {
+		(void *)&cmd_set_record_burst_stats_keyword,
+		(void *)&cmd_set_record_burst_stats_name,
+		(void *)&cmd_set_record_burst_stats_on_off,
+		NULL,
+	},
+};
+
 /* *** CONFIGURE UNICAST HASH TABLE *** */
 struct cmd_set_uc_hash_table {
 	cmdline_fixed_string_t set;
@@ -19533,6 +19578,7 @@ cmdline_parse_ctx_t main_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_set_qmap,
 	(cmdline_parse_inst_t *)&cmd_set_xstats_hide_zero,
 	(cmdline_parse_inst_t *)&cmd_set_record_core_cycles,
+	(cmdline_parse_inst_t *)&cmd_set_record_burst_stats,
 	(cmdline_parse_inst_t *)&cmd_operate_port,
 	(cmdline_parse_inst_t *)&cmd_operate_specific_port,
 	(cmdline_parse_inst_t *)&cmd_operate_attach_port,
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index d93699b34e3a..873a29a123a5 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -3685,6 +3685,12 @@ set_record_core_cycles(uint8_t on_off)
 	record_core_cycles = on_off;
 }
 
+void
+set_record_burst_stats(uint8_t on_off)
+{
+	record_burst_stats = on_off;
+}
+
 static inline void
 print_fdir_mask(struct rte_eth_fdir_masks *mask)
 {
diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
index 836bafa0f6df..7ece398bd462 100644
--- a/app/test-pmd/csumonly.c
+++ b/app/test-pmd/csumonly.c
@@ -796,9 +796,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
 	/* receive a burst of packet */
 	nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,
 				 nb_pkt_per_burst);
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->rx_burst_stats.pkt_burst_spread[nb_rx]++;
-#endif
+	inc_rx_burst_stats(fs, nb_rx);
 	if (unlikely(nb_rx == 0))
 		return;
 
@@ -1082,9 +1080,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
 	fs->rx_bad_l4_csum += rx_bad_l4_csum;
 	fs->rx_bad_outer_l4_csum += rx_bad_outer_l4_csum;
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->tx_burst_stats.pkt_burst_spread[nb_tx]++;
-#endif
+	inc_tx_burst_stats(fs, nb_tx);
 	if (unlikely(nb_tx < nb_rx)) {
 		fs->fwd_dropped += (nb_rx - nb_tx);
 		do {
diff --git a/app/test-pmd/flowgen.c b/app/test-pmd/flowgen.c
index e92a0eeca254..acf3e24605eb 100644
--- a/app/test-pmd/flowgen.c
+++ b/app/test-pmd/flowgen.c
@@ -188,9 +188,7 @@ pkt_burst_flow_gen(struct fwd_stream *fs)
 	}
 	fs->tx_packets += nb_tx;
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->tx_burst_stats.pkt_burst_spread[nb_tx]++;
-#endif
+	inc_tx_burst_stats(fs, nb_tx);
 	if (unlikely(nb_tx < nb_pkt)) {
 		/* Back out the flow counter. */
 		next_flow -= (nb_pkt - nb_tx);
diff --git a/app/test-pmd/icmpecho.c b/app/test-pmd/icmpecho.c
index 3f27e8c29d33..af6f7e7902e4 100644
--- a/app/test-pmd/icmpecho.c
+++ b/app/test-pmd/icmpecho.c
@@ -302,9 +302,7 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs)
 	 */
 	nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,
 				 nb_pkt_per_burst);
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->rx_burst_stats.pkt_burst_spread[nb_rx]++;
-#endif
+	inc_rx_burst_stats(fs, nb_rx);
 	if (unlikely(nb_rx == 0))
 		return;
 
@@ -503,9 +501,7 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs)
 			}
 		}
 		fs->tx_packets += nb_tx;
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-		fs->tx_burst_stats.pkt_burst_spread[nb_tx]++;
-#endif
+		inc_tx_burst_stats(fs, nb_tx);
 		if (unlikely(nb_tx < nb_replies)) {
 			fs->fwd_dropped += (nb_replies - nb_tx);
 			do {
diff --git a/app/test-pmd/iofwd.c b/app/test-pmd/iofwd.c
index 456f7b5925ed..83d098adcbf5 100644
--- a/app/test-pmd/iofwd.c
+++ b/app/test-pmd/iofwd.c
@@ -59,9 +59,7 @@ pkt_burst_io_forward(struct fwd_stream *fs)
 	 */
 	nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue,
 			pkts_burst, nb_pkt_per_burst);
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->rx_burst_stats.pkt_burst_spread[nb_rx]++;
-#endif
+	inc_rx_burst_stats(fs, nb_rx);
 	if (unlikely(nb_rx == 0))
 		return;
 	fs->rx_packets += nb_rx;
@@ -80,9 +78,7 @@ pkt_burst_io_forward(struct fwd_stream *fs)
 		}
 	}
 	fs->tx_packets += nb_tx;
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->tx_burst_stats.pkt_burst_spread[nb_tx]++;
-#endif
+	inc_tx_burst_stats(fs, nb_tx);
 	if (unlikely(nb_tx < nb_rx)) {
 		fs->fwd_dropped += (nb_rx - nb_tx);
 		do {
diff --git a/app/test-pmd/macfwd.c b/app/test-pmd/macfwd.c
index 6a77568c7e60..0568ea794d48 100644
--- a/app/test-pmd/macfwd.c
+++ b/app/test-pmd/macfwd.c
@@ -65,9 +65,7 @@ pkt_burst_mac_forward(struct fwd_stream *fs)
 	 */
 	nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,
 				 nb_pkt_per_burst);
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->rx_burst_stats.pkt_burst_spread[nb_rx]++;
-#endif
+	inc_rx_burst_stats(fs, nb_rx);
 	if (unlikely(nb_rx == 0))
 		return;
 
@@ -111,9 +109,7 @@ pkt_burst_mac_forward(struct fwd_stream *fs)
 	}
 
 	fs->tx_packets += nb_tx;
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->tx_burst_stats.pkt_burst_spread[nb_tx]++;
-#endif
+	inc_tx_burst_stats(fs, nb_tx);
 	if (unlikely(nb_tx < nb_rx)) {
 		fs->fwd_dropped += (nb_rx - nb_tx);
 		do {
diff --git a/app/test-pmd/macswap.c b/app/test-pmd/macswap.c
index aaef5b0047b1..74e2dd838dd5 100644
--- a/app/test-pmd/macswap.c
+++ b/app/test-pmd/macswap.c
@@ -66,9 +66,7 @@ pkt_burst_mac_swap(struct fwd_stream *fs)
 	 */
 	nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,
 				 nb_pkt_per_burst);
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->rx_burst_stats.pkt_burst_spread[nb_rx]++;
-#endif
+	inc_rx_burst_stats(fs, nb_rx);
 	if (unlikely(nb_rx == 0))
 		return;
 
@@ -90,9 +88,7 @@ pkt_burst_mac_swap(struct fwd_stream *fs)
 		}
 	}
 	fs->tx_packets += nb_tx;
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->tx_burst_stats.pkt_burst_spread[nb_tx]++;
-#endif
+	inc_tx_burst_stats(fs, nb_tx);
 	if (unlikely(nb_tx < nb_rx)) {
 		fs->fwd_dropped += (nb_rx - nb_tx);
 		do {
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 76072ae81b93..784515314ebd 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -70,7 +70,8 @@ usage(char* progname)
 	       "--rxpt= | --rxht= | --rxwt= | --rxfreet= | "
 	       "--txpt= | --txht= | --txwt= | --txfreet= | "
 	       "--txrst= | --tx-offloads= | | --rx-offloads= | "
-	       "--vxlan-gpe-port= | --record-core-cycles]\n",
+	       "--vxlan-gpe-port= | --record-core-cycles | "
+	       "--record-burst-stats]\n",
 	       progname);
 #ifdef RTE_LIBRTE_CMDLINE
 	printf("  --interactive: run in interactive mode.\n");
@@ -217,6 +218,7 @@ usage(char* progname)
 	printf("  --rx-mq-mode=0xX: hexadecimal bitmask of RX mq mode can be "
 	       "enabled\n");
 	printf("  --record-core-cycles: enable measurement of CPU cycles.\n");
+	printf("  --record-burst-stats: enable display of RX and TX bursts.\n");
 }
 
 #ifdef RTE_LIBRTE_CMDLINE
@@ -679,6 +681,7 @@ launch_args_parse(int argc, char** argv)
 		{ "no-iova-contig",             0, 0, 0 },
 		{ "rx-mq-mode",                 1, 0, 0 },
 		{ "record-core-cycles",         0, 0, 0 },
+		{ "record-burst-stats",         0, 0, 0 },
 		{ 0, 0, 0, 0 },
 	};
 
@@ -1385,6 +1388,8 @@ launch_args_parse(int argc, char** argv)
 			}
 			if (!strcmp(lgopts[opt_idx].name, "record-core-cycles"))
 				record_core_cycles = 1;
+			if (!strcmp(lgopts[opt_idx].name, "record-burst-stats"))
+				record_burst_stats = 1;
 			break;
 		case 'h':
 			usage(argv[0]);
diff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c
index b6c8b8c7d5db..c78fc4609ae5 100644
--- a/app/test-pmd/rxonly.c
+++ b/app/test-pmd/rxonly.c
@@ -58,9 +58,7 @@ pkt_burst_receive(struct fwd_stream *fs)
 	 */
 	nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,
 				 nb_pkt_per_burst);
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->rx_burst_stats.pkt_burst_spread[nb_rx]++;
-#endif
+	inc_rx_burst_stats(fs, nb_rx);
 	if (unlikely(nb_rx == 0))
 		return;
 
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index f327b16604d2..fb286b86e51b 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -480,6 +480,11 @@ uint8_t xstats_hide_zero;
  */
 uint8_t record_core_cycles;
 
+/*
+ * Display of RX and TX bursts disabled by default
+ */
+uint8_t record_burst_stats;
+
 unsigned int num_sockets = 0;
 unsigned int socket_ids[RTE_MAX_NUMA_NODES];
 
@@ -1684,7 +1689,6 @@ init_fwd_streams(void)
 	return 0;
 }
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
 static void
 pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)
 {
@@ -1751,7 +1755,6 @@ pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)
 		sburstp += burst_percent[i];
 	}
 }
-#endif /* RTE_TEST_PMD_RECORD_BURST_STATS */
 
 static void
 fwd_stream_stats_display(streamid_t stream_id)
@@ -1782,10 +1785,10 @@ fwd_stream_stats_display(streamid_t stream_id)
 		printf("\n");
 	}
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	pkt_burst_stats_display("RX", &fs->rx_burst_stats);
-	pkt_burst_stats_display("TX", &fs->tx_burst_stats);
-#endif
+	if (record_burst_stats) {
+		pkt_burst_stats_display("RX", &fs->rx_burst_stats);
+		pkt_burst_stats_display("TX", &fs->tx_burst_stats);
+	}
 }
 
 void
@@ -1915,14 +1918,14 @@ fwd_stats_display(void)
 			       stats.opackets + ports_stats[pt_id].tx_dropped);
 		}
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-		if (ports_stats[pt_id].rx_stream)
-			pkt_burst_stats_display("RX",
-				&ports_stats[pt_id].rx_stream->rx_burst_stats);
-		if (ports_stats[pt_id].tx_stream)
-			pkt_burst_stats_display("TX",
-				&ports_stats[pt_id].tx_stream->tx_burst_stats);
-#endif
+		if (record_burst_stats) {
+			if (ports_stats[pt_id].rx_stream)
+				pkt_burst_stats_display("RX",
+					&ports_stats[pt_id].rx_stream->rx_burst_stats);
+			if (ports_stats[pt_id].tx_stream)
+				pkt_burst_stats_display("TX",
+					&ports_stats[pt_id].tx_stream->tx_burst_stats);
+		}
 
 		if (port->rx_queue_stats_mapping_enabled) {
 			printf("\n");
@@ -2004,10 +2007,8 @@ fwd_stats_reset(void)
 		fs->rx_bad_l4_csum = 0;
 		fs->rx_bad_outer_l4_csum = 0;
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
 		memset(&fs->rx_burst_stats, 0, sizeof(fs->rx_burst_stats));
 		memset(&fs->tx_burst_stats, 0, sizeof(fs->tx_burst_stats));
-#endif
 		fs->core_cycles = 0;
 	}
 }
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index dcc37be02d59..a8ae5cceb198 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -76,7 +76,6 @@ enum {
 	/**< allocate mempool natively, use rte_pktmbuf_pool_create_extbuf */
 };
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
 /**
  * The data structure associated with RX and TX packet burst statistics
  * that are recorded for each forwarding stream.
@@ -84,7 +83,6 @@ enum {
 struct pkt_burst_stats {
 	unsigned int pkt_burst_spread[MAX_PKT_BURST];
 };
-#endif
 
 /** Information for a given RSS type. */
 struct rss_type_info {
@@ -130,10 +128,8 @@ struct fwd_stream {
 	/**< received packets has bad outer l4 checksum */
 	unsigned int gro_times;	/**< GRO operation times */
 	uint64_t     core_cycles; /**< used for RX and TX processing */
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
 	struct pkt_burst_stats rx_burst_stats;
 	struct pkt_burst_stats tx_burst_stats;
-#endif
 };
 
 /** Descriptor for a single flow. */
@@ -300,6 +296,7 @@ extern uint8_t xstats_hide_zero; /**< Hide zero values for xstats display */
 
 /* globals used for configuration */
 extern uint8_t record_core_cycles; /**< Enables measurement of CPU cycles */
+extern uint8_t record_burst_stats; /**< Enables display of RX and TX bursts */
 extern uint16_t verbose_level; /**< Drives messages being displayed, if any. */
 extern int testpmd_logtype; /**< Log type for testpmd logs */
 extern uint8_t  interactive;
@@ -694,6 +691,20 @@ get_end_cycles(struct fwd_stream *fs, uint64_t start_tsc)
 		fs->core_cycles += rte_rdtsc() - start_tsc;
 }
 
+static inline void
+inc_rx_burst_stats(struct fwd_stream *fs, uint16_t nb_rx)
+{
+	if (record_burst_stats)
+		fs->rx_burst_stats.pkt_burst_spread[nb_rx]++;
+}
+
+static inline void
+inc_tx_burst_stats(struct fwd_stream *fs, uint16_t nb_tx)
+{
+	if (record_burst_stats)
+		fs->tx_burst_stats.pkt_burst_spread[nb_tx]++;
+}
+
 /* Prototypes */
 unsigned int parse_item_list(char* str, const char* item_name,
 			unsigned int max_items,
@@ -786,6 +797,7 @@ void set_qmap(portid_t port_id, uint8_t is_rx, uint16_t queue_id, uint8_t map_va
 void set_xstats_hide_zero(uint8_t on_off);
 
 void set_record_core_cycles(uint8_t on_off);
+void set_record_burst_stats(uint8_t on_off);
 void set_verbose_level(uint16_t vb_level);
 void set_tx_pkt_segments(unsigned *seg_lengths, unsigned nb_segs);
 void show_tx_pkt_segments(void);
diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c
index 00a3a6f90c7a..7d4f105ccd68 100644
--- a/app/test-pmd/txonly.c
+++ b/app/test-pmd/txonly.c
@@ -369,9 +369,7 @@ pkt_burst_transmit(struct fwd_stream *fs)
 	if (txonly_multi_flow)
 		RTE_PER_LCORE(_ip_var) -= nb_pkt - nb_tx;
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-	fs->tx_burst_stats.pkt_burst_spread[nb_tx]++;
-#endif
+	inc_tx_burst_stats(fs, nb_tx);
 	if (unlikely(nb_tx < nb_pkt)) {
 		if (verbose_level > 0 && fs->fwd_dropped == 0)
 			printf("port %d tx_queue %d - drop "
-- 
2.17.1


  parent reply	other threads:[~2020-07-14 21:52 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20200506215939eucas1p1fd98a671dda83adf884c30d7bf9b77c4@eucas1p1.samsung.com>
2020-05-06 21:58 ` [dpdk-dev] [PATCH 1/5] app/testpmd: print clock with CPU cycles per pkt Dharmik Thakkar
2020-05-06 21:58   ` [dpdk-dev] [PATCH 2/5] app/testpmd: print fractional part in CPU cycles Dharmik Thakkar
2020-05-07  9:50     ` Ananyev, Konstantin
2020-05-07 22:16       ` Dharmik Thakkar
2020-05-08 17:17         ` Ananyev, Konstantin
2020-05-08 17:36           ` Dharmik Thakkar
2020-05-08 18:08             ` Ananyev, Konstantin
2020-05-06 21:58   ` [dpdk-dev] [PATCH 3/5] doc: add cycles per packet in testpmd user guide Dharmik Thakkar
2020-05-07  5:24     ` Jerin Jacob
2020-05-07 22:27       ` Dharmik Thakkar
2020-05-07 14:30     ` Iremonger, Bernard
2020-05-06 21:58   ` [dpdk-dev] [PATCH 4/5] doc: include config options " Dharmik Thakkar
2020-05-07 14:42     ` Iremonger, Bernard
2020-05-06 21:58   ` [dpdk-dev] [PATCH 5/5] doc: add aarch64 generic counter section Dharmik Thakkar
2020-05-07  5:17     ` Jerin Jacob
2020-05-06 22:48   ` [dpdk-dev] [PATCH 1/5] app/testpmd: print clock with CPU cycles per pkt Lukasz Wojciechowski
2020-05-07 13:38   ` Iremonger, Bernard
2020-05-08 22:38   ` [dpdk-dev] [PATCH v2 " Dharmik Thakkar
2020-05-08 22:38     ` [dpdk-dev] [PATCH v2 2/5] app/testpmd: print fractional part in CPU cycles Dharmik Thakkar
2020-05-12 10:19       ` Iremonger, Bernard
2020-05-08 22:38     ` [dpdk-dev] [PATCH v2 3/5] doc: add cycles per packet in testpmd user guide Dharmik Thakkar
2020-05-12 10:20       ` Iremonger, Bernard
2020-05-15 12:15       ` Ferruh Yigit
2020-05-15 20:33         ` Dharmik Thakkar
2020-05-18  9:47           ` Ferruh Yigit
2020-05-18 21:49             ` Dharmik Thakkar
2020-05-19  8:27               ` Ferruh Yigit
2020-05-20  3:20       ` [dpdk-dev] [PATCH v3 1/2] " Dharmik Thakkar
2020-05-20  3:20         ` [dpdk-dev] [PATCH v3 2/2] doc: include config options " Dharmik Thakkar
2020-06-17 18:21           ` Ferruh Yigit
2020-06-17 19:48             ` Thomas Monjalon
2020-06-19 15:38               ` Dharmik Thakkar
2020-06-19 15:43                 ` Thomas Monjalon
2020-06-19 16:13                   ` Dharmik Thakkar
2020-06-22 15:26                     ` Thomas Monjalon
2020-06-29 14:25                       ` Dharmik Thakkar
2020-07-14 21:51           ` [dpdk-dev] [PATCH 0/6] app/testpmd: add runtime config Dharmik Thakkar
2020-07-14 21:51             ` [dpdk-dev] [PATCH 1/6] app/testpmd: add record-core-cycles " Dharmik Thakkar
2020-07-14 21:51             ` [dpdk-dev] [PATCH 2/6] doc: add record-core-cycles to testpmd funcs doc Dharmik Thakkar
2020-07-14 21:51             ` Dharmik Thakkar [this message]
2020-07-14 21:51             ` [dpdk-dev] [PATCH 4/6] doc: add record-burst-stats " Dharmik Thakkar
2020-07-14 21:51             ` [dpdk-dev] [PATCH 5/6] app/testpmd: enable burst stats for noisy vnf mode Dharmik Thakkar
2020-07-14 21:51             ` [dpdk-dev] [PATCH 6/6] app/testpmd: enable empty polls in 5tswap Dharmik Thakkar
2020-07-15  4:29               ` Phil Yang
2020-08-26 16:33             ` [dpdk-dev] [PATCH 0/6] app/testpmd: add runtime config Ferruh Yigit
2020-08-26 16:41               ` Bruce Richardson
2020-08-26 17:07                 ` Dharmik Thakkar
2020-08-26 22:06                   ` Ferruh Yigit
2020-09-10 15:06                     ` Ferruh Yigit
2020-08-26 21:24                 ` Ferruh Yigit
2020-05-20 14:49         ` [dpdk-dev] [PATCH v3 1/2] doc: add cycles per packet in testpmd user guide Ferruh Yigit
2020-05-21 17:41           ` Ferruh Yigit
2020-05-08 22:38     ` [dpdk-dev] [PATCH v2 4/5] doc: include config options " Dharmik Thakkar
2020-05-12 10:20       ` Iremonger, Bernard
2020-05-19  7:42         ` Thomas Monjalon
2020-05-19 22:58           ` Dharmik Thakkar
2020-05-20  7:53             ` Thomas Monjalon
2020-05-20 22:39               ` Dharmik Thakkar
2020-05-19  7:45       ` Thomas Monjalon
2020-05-08 22:38     ` [dpdk-dev] [PATCH v2 5/5] doc: add aarch64 generic counter section Dharmik Thakkar
2020-05-12 10:18     ` [dpdk-dev] [PATCH v2 1/5] app/testpmd: print clock with CPU cycles per pkt Iremonger, Bernard
2020-05-15 12:23     ` Ferruh Yigit

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=20200714215108.22437-4-dharmik.thakkar@arm.com \
    --to=dharmik.thakkar@arm.com \
    --cc=beilei.xing@intel.com \
    --cc=bernard.iremonger@intel.com \
    --cc=dev@dpdk.org \
    --cc=nd@arm.com \
    --cc=wenzhuo.lu@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).