On 12/4/2016 6:17 PM, Hemant Agrawal wrote: > Signed-off-by: Hemant Agrawal <hemant.agra...@nxp.com> > --- > 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, >