When configuring the session, use the queue pair mb_mgr that was already
allocated if possible. If this doesn't exist, then allocate a new
mb_mgr.

This reduces unnecessary cycles creating an mb_mgr for every session
configured.

Fixes: c75542ae4200 ("crypto/ipsec_mb: introduce IPsec_mb framework")
Cc: sta...@dpdk.org

Signed-off-by: Pablo de Lara <pablo.de.lara.gua...@intel.com>
Signed-off-by: Ciara Power <ciara.po...@intel.com>
---
 drivers/crypto/ipsec_mb/ipsec_mb_ops.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c 
b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
index 3e52f95674..f9ced8afc3 100644
--- a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
+++ b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
@@ -434,15 +434,22 @@ ipsec_mb_sym_session_configure(
        struct ipsec_mb_dev_private *internals = dev->data->dev_private;
        struct ipsec_mb_internals *pmd_data =
                &ipsec_mb_pmds[internals->pmd_type];
-       IMB_MGR *mb_mgr = alloc_init_mb_mgr();
+       struct ipsec_mb_qp *qp = dev->data->queue_pairs[0];
+       IMB_MGR *mb_mgr;
        int ret = 0;
 
+       if (qp != NULL)
+               mb_mgr = qp->mb_mgr;
+       else
+               mb_mgr = alloc_init_mb_mgr();
+
        if (!mb_mgr)
                return -ENOMEM;
 
        if (unlikely(sess == NULL)) {
                IPSEC_MB_LOG(ERR, "invalid session struct");
-               free_mb_mgr(mb_mgr);
+               if (qp == NULL)
+                       free_mb_mgr(mb_mgr);
                return -EINVAL;
        }
 
@@ -452,11 +459,13 @@ ipsec_mb_sym_session_configure(
                IPSEC_MB_LOG(ERR, "failed configure session parameters");
 
                /* Return session to mempool */
-               free_mb_mgr(mb_mgr);
+               if (qp == NULL)
+                       free_mb_mgr(mb_mgr);
                return ret;
        }
 
-       free_mb_mgr(mb_mgr);
+       if (qp == NULL)
+                       free_mb_mgr(mb_mgr);
        return 0;
 }
 
-- 
2.25.1

Reply via email to