From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fan Zhang Subject: [PATCH] librte_port: fix mbuf allocation in source port Date: Mon, 30 Nov 2015 20:41:09 +0000 Message-ID: <1448916070-31815-1-git-send-email-roy.fan.zhang@intel.com> To: dev@dpdk.org Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 152448D95 for ; Mon, 30 Nov 2015 22:03:18 +0100 (CET) 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" Fixes the mbuf allocation not initialized problem. This problem will cause the mbufs not be able to freed back to mempool by rte_pktmbuf_free(). The problem was introduced by commit "Packet Framework librte_port: Source /Sink ports" (commit id ef3403fb6f9a3c4b730d2e4fbe7ddc0291ffa992) Signed-off-by: Fan Zhang Acked-by: Cristian Dumitrescu --- lib/librte_port/rte_port_source_sink.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/librte_port/rte_port_source_sink.c b/lib/librte_port/rte_port_source_sink.c index 234ab18..5e10144 100644 --- a/lib/librte_port/rte_port_source_sink.c +++ b/lib/librte_port/rte_port_source_sink.c @@ -105,10 +105,16 @@ static int rte_port_source_rx(void *port, struct rte_mbuf **pkts, uint32_t n_pkts) { struct rte_port_source *p = (struct rte_port_source *) port; + uint32_t i; if (rte_mempool_get_bulk(p->mempool, (void **) pkts, n_pkts) != 0) return 0; + for (i = 0; i < n_pkts; i++) { + rte_mbuf_refcnt_set(pkts[i], 1); + rte_pktmbuf_reset(pkts[i]); + } + RTE_PORT_SOURCE_STATS_PKTS_IN_ADD(p, n_pkts); return n_pkts; -- 2.5.0