Hi Robert, Sorry for my delay, I am traveling this week, I will reply as soon as I find a slot to focus on this, hopefully in the next couple of days, thanks for your patience.
Regards, Cristian > -----Original Message----- > From: Sanford, Robert [mailto:rsanford at akamai.com] > Sent: Friday, April 1, 2016 12:43 PM > To: dev at dpdk.org; Dumitrescu, Cristian <cristian.dumitrescu at intel.com> > Subject: Re: [dpdk-dev] [PATCH 1/4] app/test: enhance > test_port_ring_writer > > We don't need to change this line, because we never access more than > RTE_PORT_IN_BURST_SIZE_MAX (64) elements in this array: > > - struct rte_mbuf *mbuf[RTE_PORT_IN_BURST_SIZE_MAX]; > + struct rte_mbuf *mbuf[2 * RTE_PORT_IN_BURST_SIZE_MAX]; > > > -- > Robert > > >Add code to send two 60-packet bursts to a ring port_out. > >This tests a ring writer buffer overflow problem and fix > >(in patch 2/4). > > > >Signed-off-by: Robert Sanford <rsanford at akamai.com> > >--- > > app/test/test_table_ports.c | 27 +++++++++++++++++++++++++-- > > 1 files changed, 25 insertions(+), 2 deletions(-) > > > >diff --git a/app/test/test_table_ports.c b/app/test/test_table_ports.c > >index 2532367..0c0ec0a 100644 > >--- a/app/test/test_table_ports.c > >+++ b/app/test/test_table_ports.c > >@@ -149,8 +149,8 @@ test_port_ring_writer(void) > > > > /* -- Traffic TX -- */ > > int expected_pkts, received_pkts; > >- struct rte_mbuf *mbuf[RTE_PORT_IN_BURST_SIZE_MAX]; > >- struct rte_mbuf *res_mbuf[RTE_PORT_IN_BURST_SIZE_MAX]; > >+ struct rte_mbuf *mbuf[2 * RTE_PORT_IN_BURST_SIZE_MAX]; > >+ struct rte_mbuf *res_mbuf[2 * RTE_PORT_IN_BURST_SIZE_MAX]; > > > > port_ring_writer_params.ring = RING_TX; > > port_ring_writer_params.tx_burst_sz = > RTE_PORT_IN_BURST_SIZE_MAX; > >@@ -216,5 +216,28 @@ test_port_ring_writer(void) > > for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++) > > rte_pktmbuf_free(res_mbuf[i]); > > > >+ /* TX Bulk - send two 60-packet bursts */ > >+ uint64_t pkt_mask = 0xfffffffffffffff0ULL; > >+ > >+ for (i = 0; i < 4; i++) > >+ mbuf[i] = NULL; > >+ for (i = 4; i < 64; i++) > >+ mbuf[i] = rte_pktmbuf_alloc(pool); > >+ rte_port_ring_writer_ops.f_tx_bulk(port, mbuf, pkt_mask); > >+ for (i = 4; i < 64; i++) > >+ mbuf[i] = rte_pktmbuf_alloc(pool); > >+ rte_port_ring_writer_ops.f_tx_bulk(port, mbuf, pkt_mask); > >+ rte_port_ring_writer_ops.f_flush(port); > >+ > >+ expected_pkts = 2 * 60; > >+ received_pkts = > rte_ring_sc_dequeue_burst(port_ring_writer_params.ring, > >+ (void **)res_mbuf, 2 * RTE_PORT_IN_BURST_SIZE_MAX); > >+ > >+ if (received_pkts != expected_pkts) > >+ return -10; > >+ > >+ for (i = 0; i < received_pkts; i++) > >+ rte_pktmbuf_free(res_mbuf[i]); > >+ > > return 0; > > } > >-- > >1.7.1 > >