From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id F192E1396 for ; Tue, 12 Sep 2017 20:26:39 +0200 (CEST) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga105.fm.intel.com with ESMTP; 12 Sep 2017 11:26:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,383,1500966000"; d="scan'208";a="150521481" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.237.220.57]) ([10.237.220.57]) by fmsmga005.fm.intel.com with ESMTP; 12 Sep 2017 11:26:38 -0700 To: Andrew Rybchenko , dev@dpdk.org Cc: Ivan Malov References: <1504880151-15394-1-git-send-email-arybchenko@solarflare.com> From: Ferruh Yigit Message-ID: <84511c11-3e8d-e60e-f4a3-e6187f9e21d9@intel.com> Date: Tue, 12 Sep 2017 19:26:37 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <1504880151-15394-1-git-send-email-arybchenko@solarflare.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH 1/2] net/sfc: free mbufs in bulks on EF10 native Tx datapath reap 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: , X-List-Received-Date: Tue, 12 Sep 2017 18:26:40 -0000 On 9/8/2017 3:15 PM, Andrew Rybchenko wrote: > From: Ivan Malov > > Signed-off-by: Ivan Malov > Signed-off-by: Andrew Rybchenko > --- > drivers/net/sfc/sfc_ef10_tx.c | 48 ++++++++++++++++++++++++++++++++++++------- > drivers/net/sfc/sfc_tweak.h | 3 +++ > 2 files changed, 44 insertions(+), 7 deletions(-) > > diff --git a/drivers/net/sfc/sfc_ef10_tx.c b/drivers/net/sfc/sfc_ef10_tx.c > index 182fc23..5127a7a 100644 > --- a/drivers/net/sfc/sfc_ef10_tx.c > +++ b/drivers/net/sfc/sfc_ef10_tx.c > @@ -158,17 +158,35 @@ struct sfc_ef10_txq { > pending += sfc_ef10_tx_process_events(txq); > > if (pending != completed) { > + struct rte_mbuf *bulk[SFC_TX_REAP_BULK_SIZE]; > + unsigned int nb = 0; > + > do { > struct sfc_ef10_tx_sw_desc *txd; > + struct rte_mbuf *m; > > txd = &txq->sw_ring[completed & ptr_mask]; > + if (txd->mbuf == NULL) > + continue; > > - if (txd->mbuf != NULL) { > - rte_pktmbuf_free(txd->mbuf); > - txd->mbuf = NULL; > + m = rte_pktmbuf_prefree_seg(txd->mbuf); > + txd->mbuf = NULL; > + if (m == NULL) > + continue; > + > + if ((nb == RTE_DIM(bulk)) || > + ((nb != 0) && (m->pool != bulk[0]->pool))) { ICC is giving warning [1] here, as far as I can see this is false positive but can you please double check in case I am missing something? And unless if you don't see a way to convince icc without effecting performance, would you mind updating patch to ignore warning [2] ? [1] error #3656: variable "bulk" may be used before its value is set [2] diff --git a/drivers/net/sfc/Makefile b/drivers/net/sfc/Makefile index 57aa963ba..359314809 100644 --- a/drivers/net/sfc/Makefile +++ b/drivers/net/sfc/Makefile @@ -65,6 +65,7 @@ CFLAGS += -Wbad-function-cast CFLAGS_BASE_DRIVER += -Wno-empty-body else ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y) CFLAGS_BASE_DRIVER += -Wno-unused-but-set-variable +CFLAGS_sfc_ef10_tx.o += -wd3656 endif # > + rte_mempool_put_bulk(bulk[0]->pool, > + (void *)bulk, nb); > + nb = 0; > } > + > + bulk[nb++] = m; > } while (++completed != pending); > > + if (nb != 0) > + rte_mempool_put_bulk(bulk[0]->pool, (void *)bulk, nb); > + > txq->completed = completed; > } <...>