Hi, Alvin > -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Zhang,Alvin > Sent: Wednesday, November 25, 2020 5:46 PM > To: Liang, Cunming <cunming.li...@intel.com> > Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zh...@intel.com>; > sta...@dpdk.org > Subject: [dpdk-dev] [PATCH] test: fix buffer overflow > > From: Alvin Zhang <alvinx.zh...@intel.com> > > The Tx buffer may overflow when there is more than one port. > > Signed-off-by: Alvin Zhang <alvinx.zh...@intel.com> > > Fixes: 002ade70e933 ("app/test: measure cycles per packet in Rx/Tx") > Cc: sta...@dpdk.org > --- > app/test/test_pmd_perf.c | 18 ++++++++---------- > 1 file changed, 8 insertions(+), 10 deletions(-) > > diff --git a/app/test/test_pmd_perf.c b/app/test/test_pmd_perf.c index > 4db816a..3a248d5 100644 > --- a/app/test/test_pmd_perf.c > +++ b/app/test/test_pmd_perf.c > @@ -606,10 +606,10 @@ enum { > static int > exec_burst(uint32_t flags, int lcore) > { > - unsigned i, portid, nb_tx = 0; > + unsigned int portid, nb_tx = 0; > struct lcore_conf *conf; > uint32_t pkt_per_port; > - int num, idx = 0; > + int num, i, idx = 0; > int diff_tsc; > > conf = &lcore_conf[lcore]; > @@ -628,16 +628,14 @@ enum { > rte_atomic64_set(&start, 1); > > /* start xmit */ > + i = 0; > while (num) { > nb_tx = RTE_MIN(MAX_PKT_BURST, num); > - for (i = 0; i < conf->nb_ports; i++) { > - portid = conf->portlist[i]; > - nb_tx = rte_eth_tx_burst(portid, 0, > - &tx_burst[idx], nb_tx); > - idx += nb_tx; > - num -= nb_tx; > - } > - > + portid = conf->portlist[i]; > + nb_tx = rte_eth_tx_burst(portid, 0, &tx_burst[idx], nb_tx); > + idx += nb_tx; > + num -= nb_tx; > + i = (i >= conf->nb_ports - 1) ? 0 : (i + 1);
If conf->nb_ports = 1, after the above assign, the i should be 1 and is that your expected? > } > > sleep(5); > -- > 1.8.3.1