app/testpmd: fix burst percentage calculation

The burst % calculation can over flow due to multiplication.
Fix the multiplication and increase the size of variables to
64b.

Fixes: af75078fece3 ("first public release")
Cc: stable@dpdk.org

Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Phil Yang <phil.yang@arm.com>
Tested-by: Ali Alnubani <alialnu@mellanox.com>
This commit is contained in:
Honnappa Nagarahalli 2020-07-06 18:32:30 -05:00 committed by Ferruh Yigit
parent aac2b6a78d
commit 85de481a71

View File

@ -1692,9 +1692,9 @@ init_fwd_streams(void)
static void static void
pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs) pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)
{ {
unsigned int total_burst; uint64_t total_burst;
unsigned int nb_burst; uint64_t nb_burst;
unsigned int burst_stats[3]; uint64_t burst_stats[3];
uint16_t pktnb_stats[3]; uint16_t pktnb_stats[3];
uint16_t nb_pkt; uint16_t nb_pkt;
int burst_percent[3]; int burst_percent[3];
@ -1723,8 +1723,8 @@ pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)
} }
if (total_burst == 0) if (total_burst == 0)
return; return;
burst_percent[0] = (burst_stats[0] * 100) / total_burst; burst_percent[0] = (double)burst_stats[0] / total_burst * 100;
printf(" %s-bursts : %u [%d%% of %d pkts", rx_tx, total_burst, printf(" %s-bursts : %"PRIu64" [%d%% of %d pkts", rx_tx, total_burst,
burst_percent[0], (int) pktnb_stats[0]); burst_percent[0], (int) pktnb_stats[0]);
if (burst_stats[0] == total_burst) { if (burst_stats[0] == total_burst) {
printf("]\n"); printf("]\n");
@ -1735,7 +1735,7 @@ pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)
100 - burst_percent[0], pktnb_stats[1]); 100 - burst_percent[0], pktnb_stats[1]);
return; return;
} }
burst_percent[1] = (burst_stats[1] * 100) / total_burst; burst_percent[1] = (double)burst_stats[1] / total_burst * 100;
burst_percent[2] = 100 - (burst_percent[0] + burst_percent[1]); burst_percent[2] = 100 - (burst_percent[0] + burst_percent[1]);
if ((burst_percent[1] == 0) || (burst_percent[2] == 0)) { if ((burst_percent[1] == 0) || (burst_percent[2] == 0)) {
printf(" + %d%% of others]\n", 100 - burst_percent[0]); printf(" + %d%% of others]\n", 100 - burst_percent[0]);