queue_conf need to have mempool details before pair setup.

Fixes: 261bbff75e34 ("examples: use separate crypto session mempools")
Cc: sta...@dpdk.org

Signed-off-by: Jun Yang <jun.y...@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agra...@nxp.com>
---
 examples/ip_pipeline/cryptodev.c | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/examples/ip_pipeline/cryptodev.c b/examples/ip_pipeline/cryptodev.c
index b0d9f3d217..ae65a90859 100644
--- a/examples/ip_pipeline/cryptodev.c
+++ b/examples/ip_pipeline/cryptodev.c
@@ -99,17 +99,6 @@ cryptodev_create(const char *name, struct cryptodev_params 
*params)
        if (status < 0)
                return NULL;
 
-       queue_conf.nb_descriptors = params->queue_size;
-       for (i = 0; i < params->n_queues; i++) {
-               status = rte_cryptodev_queue_pair_setup(dev_id, i,
-                               &queue_conf, socket_id);
-               if (status < 0)
-                       return NULL;
-       }
-
-       if (rte_cryptodev_start(dev_id) < 0)
-               return NULL;
-
        cryptodev = calloc(1, sizeof(struct cryptodev));
        if (cryptodev == NULL) {
                rte_cryptodev_stop(dev_id);
@@ -149,6 +138,19 @@ cryptodev_create(const char *name, struct cryptodev_params 
*params)
 
        TAILQ_INSERT_TAIL(&cryptodev_list, cryptodev, node);
 
+       queue_conf.nb_descriptors = params->queue_size;
+       queue_conf.mp_session = cryptodev->mp_create;
+       queue_conf.mp_session_private = cryptodev->mp_init;
+       for (i = 0; i < params->n_queues; i++) {
+               status = rte_cryptodev_queue_pair_setup(dev_id, i,
+                               &queue_conf, socket_id);
+               if (status < 0)
+                       goto error_exit;
+       }
+
+       if (rte_cryptodev_start(dev_id) < 0)
+               goto error_exit;
+
        return cryptodev;
 
 error_exit:
-- 
2.17.1

Reply via email to