app/testpmd: extend forwarding statistics to 64 bits
fwd engine statistics are stored as unsigned int (32bits) and can wrap quite quickly. Example: sending 7mpps for 614s gives us 4298000000 packets => 0x1002e4680 larger than 32bits. testpmd reports forwarding stats as: RX-packets: 3500381 TX-packets: 3500010 TX-dropped: 371 While the port and accumulated stats are reported as 64bits: RX-packets: 4298467677 RX-dropped: 0 RX-total: 4298467677 TX-packets: 4298467306 TX-dropped: 371 TX-total: 4298467677 Fixes: af75078fece3 ("first public release") Cc: stable@dpdk.org Signed-off-by: David Marchand <david.marchand@redhat.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
parent
94d655468c
commit
c185d42cb4
@ -1459,13 +1459,15 @@ fwd_stream_stats_display(streamid_t stream_id)
|
||||
"TX Port=%2d/Queue=%2d %s\n",
|
||||
fwd_top_stats_border, fs->rx_port, fs->rx_queue,
|
||||
fs->tx_port, fs->tx_queue, fwd_top_stats_border);
|
||||
printf(" RX-packets: %-14u TX-packets: %-14u TX-dropped: %-14u",
|
||||
printf(" RX-packets: %-14"PRIu64" TX-packets: %-14"PRIu64
|
||||
" TX-dropped: %-14"PRIu64,
|
||||
fs->rx_packets, fs->tx_packets, fs->fwd_dropped);
|
||||
|
||||
/* if checksum mode */
|
||||
if (cur_fwd_eng == &csum_fwd_engine) {
|
||||
printf(" RX- bad IP checksum: %-14u Rx- bad L4 checksum: "
|
||||
"%-14u Rx- bad outer L4 checksum: %-14u\n",
|
||||
printf(" RX- bad IP checksum: %-14"PRIu64
|
||||
" Rx- bad L4 checksum: %-14"PRIu64
|
||||
" Rx- bad outer L4 checksum: %-14"PRIu64"\n",
|
||||
fs->rx_bad_ip_csum, fs->rx_bad_l4_csum,
|
||||
fs->rx_bad_outer_l4_csum);
|
||||
} else {
|
||||
@ -1745,9 +1747,6 @@ stop_packet_forwarding(void)
|
||||
uint64_t total_rx_dropped;
|
||||
uint64_t total_tx_dropped;
|
||||
uint64_t total_rx_nombuf;
|
||||
uint64_t tx_dropped;
|
||||
uint64_t rx_bad_ip_csum;
|
||||
uint64_t rx_bad_l4_csum;
|
||||
#ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES
|
||||
uint64_t fwd_cycles;
|
||||
#endif
|
||||
@ -1774,38 +1773,22 @@ stop_packet_forwarding(void)
|
||||
fwd_cycles = 0;
|
||||
#endif
|
||||
for (sm_id = 0; sm_id < cur_fwd_config.nb_fwd_streams; sm_id++) {
|
||||
struct fwd_stream *fs = fwd_streams[sm_id];
|
||||
|
||||
if (cur_fwd_config.nb_fwd_streams >
|
||||
cur_fwd_config.nb_fwd_ports) {
|
||||
fwd_stream_stats_display(sm_id);
|
||||
ports[fwd_streams[sm_id]->tx_port].tx_stream = NULL;
|
||||
ports[fwd_streams[sm_id]->rx_port].rx_stream = NULL;
|
||||
ports[fs->tx_port].tx_stream = NULL;
|
||||
ports[fs->rx_port].rx_stream = NULL;
|
||||
} else {
|
||||
ports[fwd_streams[sm_id]->tx_port].tx_stream =
|
||||
fwd_streams[sm_id];
|
||||
ports[fwd_streams[sm_id]->rx_port].rx_stream =
|
||||
fwd_streams[sm_id];
|
||||
ports[fs->tx_port].tx_stream = fs;
|
||||
ports[fs->rx_port].rx_stream = fs;
|
||||
}
|
||||
tx_dropped = ports[fwd_streams[sm_id]->tx_port].tx_dropped;
|
||||
tx_dropped = (uint64_t) (tx_dropped +
|
||||
fwd_streams[sm_id]->fwd_dropped);
|
||||
ports[fwd_streams[sm_id]->tx_port].tx_dropped = tx_dropped;
|
||||
|
||||
rx_bad_ip_csum =
|
||||
ports[fwd_streams[sm_id]->rx_port].rx_bad_ip_csum;
|
||||
rx_bad_ip_csum = (uint64_t) (rx_bad_ip_csum +
|
||||
fwd_streams[sm_id]->rx_bad_ip_csum);
|
||||
ports[fwd_streams[sm_id]->rx_port].rx_bad_ip_csum =
|
||||
rx_bad_ip_csum;
|
||||
|
||||
rx_bad_l4_csum =
|
||||
ports[fwd_streams[sm_id]->rx_port].rx_bad_l4_csum;
|
||||
rx_bad_l4_csum = (uint64_t) (rx_bad_l4_csum +
|
||||
fwd_streams[sm_id]->rx_bad_l4_csum);
|
||||
ports[fwd_streams[sm_id]->rx_port].rx_bad_l4_csum =
|
||||
rx_bad_l4_csum;
|
||||
|
||||
ports[fwd_streams[sm_id]->rx_port].rx_bad_outer_l4_csum +=
|
||||
fwd_streams[sm_id]->rx_bad_outer_l4_csum;
|
||||
ports[fs->tx_port].tx_dropped += fs->fwd_dropped;
|
||||
ports[fs->rx_port].rx_bad_ip_csum += fs->rx_bad_ip_csum;
|
||||
ports[fs->rx_port].rx_bad_l4_csum += fs->rx_bad_l4_csum;
|
||||
ports[fs->rx_port].rx_bad_outer_l4_csum +=
|
||||
fs->rx_bad_outer_l4_csum;
|
||||
|
||||
#ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES
|
||||
fwd_cycles = (uint64_t) (fwd_cycles +
|
||||
|
@ -119,12 +119,12 @@ struct fwd_stream {
|
||||
unsigned int retry_enabled;
|
||||
|
||||
/* "read-write" results */
|
||||
unsigned int rx_packets; /**< received packets */
|
||||
unsigned int tx_packets; /**< received packets transmitted */
|
||||
unsigned int fwd_dropped; /**< received packets not forwarded */
|
||||
unsigned int rx_bad_ip_csum ; /**< received packets has bad ip checksum */
|
||||
unsigned int rx_bad_l4_csum ; /**< received packets has bad l4 checksum */
|
||||
unsigned int rx_bad_outer_l4_csum;
|
||||
uint64_t rx_packets; /**< received packets */
|
||||
uint64_t tx_packets; /**< received packets transmitted */
|
||||
uint64_t fwd_dropped; /**< received packets not forwarded */
|
||||
uint64_t rx_bad_ip_csum ; /**< received packets has bad ip checksum */
|
||||
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 */
|
||||
unsigned int gro_times; /**< GRO operation times */
|
||||
#ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES
|
||||
|
Loading…
x
Reference in New Issue
Block a user