From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Sanford Subject: [PATCH 1/4] app/test: enhance test_port_ring_writer Date: Mon, 28 Mar 2016 16:51:34 -0400 Message-ID: <1459198297-49854-2-git-send-email-rsanford@akamai.com> References: <1459198297-49854-1-git-send-email-rsanford@akamai.com> To: dev@dpdk.org, cristian.dumitrescu@intel.com Return-path: Received: from mail-vk0-f65.google.com (mail-vk0-f65.google.com [209.85.213.65]) by dpdk.org (Postfix) with ESMTP id 791A937B4 for ; Mon, 28 Mar 2016 22:52:16 +0200 (CEST) Received: by mail-vk0-f65.google.com with SMTP id e6so16778429vkh.1 for ; Mon, 28 Mar 2016 13:52:16 -0700 (PDT) In-Reply-To: <1459198297-49854-1-git-send-email-rsanford@akamai.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- 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