From patchwork Thu Oct 5 19:11:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roger Melton X-Patchwork-Id: 29769 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CF5071B1F8; Thu, 5 Oct 2017 21:11:20 +0200 (CEST) Received: from rcdn-iport-6.cisco.com (rcdn-iport-6.cisco.com [173.37.86.77]) by dpdk.org (Postfix) with ESMTP id D31EC1B1F0 for ; Thu, 5 Oct 2017 21:11:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=1238; q=dns/txt; s=iport; t=1507230680; x=1508440280; h=from:to:cc:subject:date:message-id; bh=k2itzClPKx5B01Hn/hreP5Srf7iiD8jgzU9+Amvj0Ik=; b=U5343RloOxIGUEssCu5e/a7J4o9345nog446y1vt0MEXbRggawOtbTeT HCcmjnvveFuECo7hfGDWfR4xwDt14WMntCMftBZtzBxvxo+mfNKBaAxGS sg4FuwB7uXY6qntj7JQIHczPLY+sWCvsgx2UEMc1ycvJbuhRKj5yqncDl 4=; X-IronPort-AV: E=Sophos;i="5.42,481,1500940800"; d="scan'208";a="304107237" Received: from alln-core-4.cisco.com ([173.36.13.137]) by rcdn-iport-6.cisco.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 05 Oct 2017 19:11:18 +0000 Received: from cpp-rtpbld-54.cisco.com (cpp-rtpbld-54.cisco.com [172.18.5.198]) by alln-core-4.cisco.com (8.14.5/8.14.5) with ESMTP id v95JBHb6002087; Thu, 5 Oct 2017 19:11:18 GMT Received: by cpp-rtpbld-54.cisco.com (Postfix, from userid 51544) id D80FC609F9; Thu, 5 Oct 2017 15:11:17 -0400 (EDT) From: Roger B Melton To: jingjing.wu@intel.com Cc: dev@dpdk.org, Roger B Melton Date: Thu, 5 Oct 2017 15:11:11 -0400 Message-Id: <20171005191111.27557-1-rmelton@cisco.com> X-Mailer: git-send-email 2.10.3.dirty Subject: [dpdk-dev] [PATCH] net/i40e: Improve i40evf buffer cleanup in tx vector mode X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" --- i40evf tx vector logic frees mbufs, but it does not remove the mbufs from software rings which leads to double frees. This change corrects that oversight. We've validated this fix within our application. drivers/net/i40e/i40e_rxtx_vec_common.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h b/drivers/net/i40e/i40e_rxtx_vec_common.h index 39a6da0..fdc6fce 100644 --- a/drivers/net/i40e/i40e_rxtx_vec_common.h +++ b/drivers/net/i40e/i40e_rxtx_vec_common.h @@ -127,6 +127,7 @@ i40e_tx_free_bufs(struct i40e_tx_queue *txq) if (likely(m != NULL)) { free[0] = m; nb_free = 1; + txep[0].mbuf = NULL; for (i = 1; i < n; i++) { m = rte_pktmbuf_prefree_seg(txep[i].mbuf); if (likely(m != NULL)) { @@ -139,14 +140,17 @@ i40e_tx_free_bufs(struct i40e_tx_queue *txq) free[0] = m; nb_free = 1; } + txep[i].mbuf = NULL; } } rte_mempool_put_bulk(free[0]->pool, (void **)free, nb_free); } else { + txep[0].mbuf = NULL; for (i = 1; i < n; i++) { m = rte_pktmbuf_prefree_seg(txep[i].mbuf); if (m != NULL) rte_mempool_put(m->pool, m); + txep[i].mbuf = NULL; } }