From patchwork Wed Jan 4 13:53:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tiwei Bie X-Patchwork-Id: 18860 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 4B2472C37; Wed, 4 Jan 2017 14:59:06 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 589092A6C for ; Wed, 4 Jan 2017 14:59:03 +0100 (CET) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP; 04 Jan 2017 05:59:03 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,459,1477983600"; d="scan'208";a="49415190" Received: from dpdk19.sh.intel.com (HELO dpdk19) ([10.239.129.113]) by fmsmga005.fm.intel.com with ESMTP; 04 Jan 2017 05:59:00 -0800 Date: Wed, 4 Jan 2017 21:53:40 +0800 From: Tiwei Bie To: Jerin Jacob Cc: dev@dpdk.org, konstantin.ananyev@intel.com, thomas.monjalon@6wind.com, bruce.richardson@intel.com, jianbo.liu@linaro.org, viktorin@rehivetech.com, santosh.shukla@caviumnetworks.com, Helin Zhang , Jingjing Wu , Satha Rao Message-ID: <20170104135339.GA56511@dpdk19> References: <1481680558-4003-1-git-send-email-jerin.jacob@caviumnetworks.com> <1482832175-27199-1-git-send-email-jerin.jacob@caviumnetworks.com> <1482832175-27199-24-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1482832175-27199-24-git-send-email-jerin.jacob@caviumnetworks.com> User-Agent: Mutt/1.5.24 (2015-08-30) Subject: Re: [dpdk-dev] [PATCH v2 23/29] net/i40e: use eal I/O device memory read/write API 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" On Tue, Dec 27, 2016 at 03:19:29PM +0530, Jerin Jacob wrote: > From: Santosh Shukla > > Replace the raw I/O device memory read/write access with eal abstraction > for I/O device memory read/write access to fix portability issues across > different architectures. > [...] > diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c > index 7ae7d9f..5c41a90 100644 > --- a/drivers/net/i40e/i40e_rxtx.c > +++ b/drivers/net/i40e/i40e_rxtx.c > @@ -1228,7 +1228,7 @@ i40e_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) > (unsigned) txq->port_id, (unsigned) txq->queue_id, > (unsigned) tx_id, (unsigned) nb_tx); > > - I40E_PCI_REG_WRITE(txq->qtx_tail, tx_id); > + I40E_PCI_REG_WRITE_RELAXED(txq->qtx_tail, tx_id); > txq->tx_tail = tx_id; > > return nb_tx; > @@ -1380,7 +1380,7 @@ tx_xmit_pkts(struct i40e_tx_queue *txq, > > /* Update the tx tail register */ > rte_wmb(); > - I40E_PCI_REG_WRITE(txq->qtx_tail, txq->tx_tail); > + I40E_PCI_REG_WRITE_RELAXED(txq->qtx_tail, txq->tx_tail); > > return nb_pkts; > } Besides i40e_xmit_pkts() and tx_xmit_pkts(), i40e_rx_alloc_bufs() which is called by rx_recv_pkts() is also in the fast path. So I40E_PCI_REG_WRITE() called by it should also be replaced by the relaxed version: Thanks & regards, Tiwei Bie > -- > 2.5.5 > diff --git i/drivers/net/i40e/i40e_rxtx.c w/drivers/net/i40e/i40e_rxtx.c index 7ae7d9f..55a707a 100644 --- i/drivers/net/i40e/i40e_rxtx.c +++ w/drivers/net/i40e/i40e_rxtx.c @@ -581,7 +581,7 @@ i40e_rx_alloc_bufs(struct i40e_rx_queue *rxq) /* Update rx tail regsiter */ rte_wmb(); - I40E_PCI_REG_WRITE(rxq->qrx_tail, rxq->rx_free_trigger); + I40E_PCI_REG_WRITE_RELAXED(rxq->qrx_tail, rxq->rx_free_trigger); rxq->rx_free_trigger = (uint16_t)(rxq->rx_free_trigger + rxq->rx_free_thresh);