On 12/7/2016 1:19 AM, Ferruh Yigit wrote:
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?
I agree, dpio is now in common/dpaa2 folder in v2.
+
/* create dpio device */
int dpaa2_create_dpio_device(struct dpaa2_vfio_device *vdev,
struct vfio_device_info *obj_info,