bus/fslmc: affine dpio to crypto threads

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
This commit is contained in:
Hemant Agrawal 2017-04-11 19:07:19 +05:30 committed by Ferruh Yigit
parent 3981b74fc7
commit d93818e1d1
3 changed files with 49 additions and 0 deletions

View File

@ -275,6 +275,51 @@ dpaa2_affine_qbman_swp(void)
}
}
int
dpaa2_affine_qbman_swp_sec(void)
{
unsigned int 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 fslmc_vfio_device *vdev,
struct vfio_device_info *obj_info,

View File

@ -56,5 +56,8 @@ RTE_DECLARE_PER_LCORE(struct dpaa2_io_portal_t, _dpaa2_io);
/* 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);
#endif /* _DPAA2_HW_DPIO_H_ */

View File

@ -2,6 +2,7 @@ DPDK_17.05 {
global:
dpaa2_affine_qbman_swp;
dpaa2_affine_qbman_swp_sec;
dpaa2_alloc_dpbp_dev;
dpaa2_free_dpbp_dev;
dpbp_disable;