From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id E0AEB2BF6 for ; Tue, 6 Dec 2016 20:49:20 +0100 (CET) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP; 06 Dec 2016 11:49:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,310,1477983600"; d="scan'208";a="1078335108" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.237.220.29]) ([10.237.220.29]) by fmsmga001.fm.intel.com with ESMTP; 06 Dec 2016 11:49:17 -0800 To: Hemant Agrawal , dev@dpdk.org References: <1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com> <1480875447-23680-16-git-send-email-hemant.agrawal@nxp.com> Cc: thomas.monjalon@6wind.com, bruce.richardson@intel.com, shreyansh.jain@nxp.com From: Ferruh Yigit Message-ID: Date: Tue, 6 Dec 2016 19:49:16 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <1480875447-23680-16-git-send-email-hemant.agrawal@nxp.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH 15/32] net/dpaa2: dpio routine to affine to crypto threads 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, 06 Dec 2016 19:49:21 -0000 On 12/4/2016 6:17 PM, Hemant Agrawal wrote: > Signed-off-by: Hemant Agrawal > --- > drivers/net/dpaa2/base/dpaa2_hw_dpio.c | 45 ++++++++++++++++++++++++++++++++++ > drivers/net/dpaa2/base/dpaa2_hw_dpio.h | 3 +++ > 2 files changed, 48 insertions(+) > > diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpio.c b/drivers/net/dpaa2/base/dpaa2_hw_dpio.c > index 4a0a638..9c6eb96 100644 > --- a/drivers/net/dpaa2/base/dpaa2_hw_dpio.c > +++ b/drivers/net/dpaa2/base/dpaa2_hw_dpio.c > @@ -275,6 +275,51 @@ static inline struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(void) > } > > int > +dpaa2_affine_qbman_swp_sec(void) > +{ > + unsigned lcore_id = rte_lcore_id(); > + uint64_t tid = syscall(SYS_gettid); > + > + if (lcore_id == LCORE_ID_ANY) > + lcore_id = rte_get_master_lcore(); > + /* if the core id is not supported */ > + else if (lcore_id >= RTE_MAX_LCORE) > + return -1; > + > + if (dpaa2_io_portal[lcore_id].sec_dpio_dev) { > + PMD_DRV_LOG(INFO, "DPAA Portal=0x%x (%d) is being shared" > + " between thread %lu and current %lu", > + dpaa2_io_portal[lcore_id].sec_dpio_dev, > + dpaa2_io_portal[lcore_id].sec_dpio_dev->index, > + dpaa2_io_portal[lcore_id].sec_tid, > + tid); > + RTE_PER_LCORE(_dpaa2_io).sec_dpio_dev > + = dpaa2_io_portal[lcore_id].sec_dpio_dev; > + rte_atomic16_inc(&dpaa2_io_portal > + [lcore_id].sec_dpio_dev->ref_count); > + dpaa2_io_portal[lcore_id].sec_tid = tid; > + > + PMD_DRV_LOG(DEBUG, "Old Portal=0x%x (%d) affined thread - %lu", > + dpaa2_io_portal[lcore_id].sec_dpio_dev, > + dpaa2_io_portal[lcore_id].sec_dpio_dev->index, > + tid); > + return 0; > + } > + > + /* Populate the dpaa2_io_portal structure */ > + dpaa2_io_portal[lcore_id].sec_dpio_dev = dpaa2_get_qbman_swp(); > + > + if (dpaa2_io_portal[lcore_id].sec_dpio_dev) { > + RTE_PER_LCORE(_dpaa2_io).sec_dpio_dev > + = dpaa2_io_portal[lcore_id].sec_dpio_dev; > + dpaa2_io_portal[lcore_id].sec_tid = tid; > + return 0; > + } else { > + return -1; > + } > +} > + > +int > dpaa2_create_dpio_device(struct dpaa2_vfio_device *vdev, > struct vfio_device_info *obj_info, > int object_id) > diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpio.h b/drivers/net/dpaa2/base/dpaa2_hw_dpio.h > index d90b900..8480ce3 100644 > --- a/drivers/net/dpaa2/base/dpaa2_hw_dpio.h > +++ b/drivers/net/dpaa2/base/dpaa2_hw_dpio.h > @@ -57,6 +57,9 @@ struct dpaa2_io_portal_t { > /* Affine a DPIO portal to current processing thread */ > int dpaa2_affine_qbman_swp(void); > > +/* Affine additional DPIO portal to current crypto processing thread */ > +int dpaa2_affine_qbman_swp_sec(void); Why crypto related code in net driver base folder? Shouldn't these go to common folder? > + > /* create dpio device */ > int dpaa2_create_dpio_device(struct dpaa2_vfio_device *vdev, > struct vfio_device_info *obj_info, >