From mboxrd@z Thu Jan 1 00:00:00 1970 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) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP; 30 Nov 2015 13:03:16 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,365,1444719600"; d="scan'208";a="5020352" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga004.fm.intel.com with ESMTP; 30 Nov 2015 13:03:16 -0800 Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com [10.237.217.46]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id tAUKfCjT015650; Mon, 30 Nov 2015 20:41:12 GMT Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1]) by sivswdev02.ir.intel.com with ESMTP id tAUKfCKG031854; Mon, 30 Nov 2015 20:41:12 GMT Received: (from fanzhan2@localhost) by sivswdev02.ir.intel.com with id tAUKfC28031850; Mon, 30 Nov 2015 20:41:12 GMT From: Fan Zhang To: dev@dpdk.org Date: Mon, 30 Nov 2015 20:41:09 +0000 Message-Id: <1448916070-31815-1-git-send-email-roy.fan.zhang@intel.com> X-Mailer: git-send-email 1.7.4.1 Subject: [dpdk-dev] [PATCH] librte_port: fix mbuf allocation in source port X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Nov 2015 21:03:19 -0000 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