This patch adds generic functions for allowing dq storage
for the frame queues.
As the frame queues are common resource for different drivers
this is helpful.

Signed-off-by: Hemant Agrawal <hemant.agra...@nxp.com>
---
 drivers/bus/fslmc/portal/dpaa2_hw_dpio.c    | 32 +++++++++++++++++++++++++++++
 drivers/bus/fslmc/portal/dpaa2_hw_dpio.h    |  7 +++++++
 drivers/bus/fslmc/rte_bus_fslmc_version.map |  2 ++
 3 files changed, 41 insertions(+)

diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c 
b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
index bd1f643..c80d6c5 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
@@ -407,3 +407,35 @@ static inline struct dpaa2_dpio_dev 
*dpaa2_get_qbman_swp(void)
 
        return 0;
 }
+
+void
+dpaa2_free_dq_storage(struct queue_storage_info_t *q_storage)
+{
+       int i = 0;
+
+       for (i = 0; i < NUM_DQS_PER_QUEUE; i++) {
+               if (q_storage->dq_storage[i])
+                       rte_free(q_storage->dq_storage[i]);
+       }
+}
+
+int
+dpaa2_alloc_dq_storage(struct queue_storage_info_t *q_storage)
+{
+       int i = 0;
+
+       for (i = 0; i < NUM_DQS_PER_QUEUE; i++) {
+               q_storage->dq_storage[i] = rte_malloc(NULL,
+                       DPAA2_DQRR_RING_SIZE * sizeof(struct qbman_result),
+                       RTE_CACHE_LINE_SIZE);
+               if (!q_storage->dq_storage[i])
+                       goto fail;
+       }
+       return 0;
+fail:
+       i -= 1;
+       while (i >= 0)
+               rte_free(q_storage->dq_storage[i]);
+
+       return -1;
+}
diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.h 
b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.h
index b1a1b8f..f2e1168 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.h
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.h
@@ -59,5 +59,12 @@ struct dpaa2_io_portal_t {
 /* Affine additional DPIO portal to current crypto processing thread */
 int dpaa2_affine_qbman_swp_sec(void);
 
+/* allocate memory for FQ - dq storage */
+int
+dpaa2_alloc_dq_storage(struct queue_storage_info_t *q_storage);
+
+/* free memory for FQ- dq storage */
+void
+dpaa2_free_dq_storage(struct queue_storage_info_t *q_storage);
 
 #endif /* _DPAA2_HW_DPIO_H_ */
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map 
b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 505873a..4298d77 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -4,7 +4,9 @@ DPDK_17.02 {
         dpaa2_affine_qbman_swp;
         dpaa2_affine_qbman_swp_sec;
         dpaa2_alloc_dpbp_dev;
+        dpaa2_alloc_dq_storage;
         dpaa2_free_dpbp_dev;
+        dpaa2_free_dq_storage;
         dpbp_disable;
         dpbp_enable;
         dpbp_get_attributes;
-- 
1.9.1

Reply via email to