Message ID | 20201125094622.12064-1-alvinx.zhang@intel.com |
---|---|
State | Accepted |
Delegated to: | Thomas Monjalon |
Headers | show |
Series |
|
Related | show |
Context | Check | Description |
---|---|---|
ci/travis-robot | success | Travis build: passed |
ci/iol-mellanox-Performance | success | Performance Testing PASS |
ci/Intel-compilation | success | Compilation OK |
ci/iol-intel-Performance | success | Performance Testing PASS |
ci/iol-intel-Functional | success | Functional Testing PASS |
ci/iol-testing | success | Testing PASS |
ci/iol-broadcom-Performance | success | Performance Testing PASS |
ci/iol-broadcom-Functional | success | Functional Testing PASS |
ci/checkpatch | success | coding style OK |
Tested-by: Wei Ling <weix.ling@intel.com> Regards, Ling Wei > -----Original Message----- > From: dev <dev-bounces@dpdk.org> On Behalf Of Zhang,Alvin > Sent: Wednesday, November 25, 2020 05:46 PM > To: Liang, Cunming <cunming.liang@intel.com> > Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>; > stable@dpdk.org > Subject: [dpdk-dev] [PATCH] test: fix buffer overflow >
Hi, Alvin > -----Original Message----- > From: dev <dev-bounces@dpdk.org> On Behalf Of Zhang,Alvin > Sent: Wednesday, November 25, 2020 5:46 PM > To: Liang, Cunming <cunming.liang@intel.com> > Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>; > stable@dpdk.org > Subject: [dpdk-dev] [PATCH] test: fix buffer overflow > > From: Alvin Zhang <alvinx.zhang@intel.com> > > The Tx buffer may overflow when there is more than one port. > > Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com> > > Fixes: 002ade70e933 ("app/test: measure cycles per packet in Rx/Tx") > Cc: stable@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
Acked-by: Jeff Guo <jia.guo@intel.com> > -----Original Message----- > From: Guo, Jia > Sent: Friday, January 15, 2021 4:31 PM > To: 'Zhang,Alvin' <alvinx.zhang@intel.com>; Liang, Cunming > <cunming.liang@intel.com> > Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>; > stable@dpdk.org > Subject: RE: [dpdk-dev] [PATCH] test: fix buffer overflow > > Hi, Alvin > > > -----Original Message----- > > From: dev <dev-bounces@dpdk.org> On Behalf Of Zhang,Alvin > > Sent: Wednesday, November 25, 2020 5:46 PM > > To: Liang, Cunming <cunming.liang@intel.com> > > Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>; > > stable@dpdk.org > > Subject: [dpdk-dev] [PATCH] test: fix buffer overflow > > > > From: Alvin Zhang <alvinx.zhang@intel.com> > > > > The Tx buffer may overflow when there is more than one port. > > > > Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com> > > > > Fixes: 002ade70e933 ("app/test: measure cycles per packet in Rx/Tx") > > Cc: stable@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? Please ignore above comment, this code should be works. > > > } > > > > sleep(5); > > -- > > 1.8.3.1
> > > From: Alvin Zhang <alvinx.zhang@intel.com> > > > > > > The Tx buffer may overflow when there is more than one port. > > > > > > Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com> > > > > > > Fixes: 002ade70e933 ("app/test: measure cycles per packet in Rx/Tx") > > > Cc: stable@dpdk.org > Acked-by: Jeff Guo <jia.guo@intel.com> Applied, thanks
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); } sleep(5);