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,
> 

Reply via email to