From: Kanaka Durga Kotamarthy <kkotamar...@marvell.com>

This patch determines metabuf length needed to perform asymmetric crypto
operation.

Signed-off-by: Anoob Joseph <ano...@marvell.com>
Signed-off-by: Kanaka Durga Kotamarthy <kkotamar...@marvell.com>
Signed-off-by: Sunila Sahu <ss...@marvell.com>
---
 drivers/crypto/octeontx2/otx2_cryptodev_ops.c | 37 +++++++++++++++++++--------
 1 file changed, 26 insertions(+), 11 deletions(-)

diff --git a/drivers/crypto/octeontx2/otx2_cryptodev_ops.c 
b/drivers/crypto/octeontx2/otx2_cryptodev_ops.c
index b21714c..6050b18 100644
--- a/drivers/crypto/octeontx2/otx2_cryptodev_ops.c
+++ b/drivers/crypto/octeontx2/otx2_cryptodev_ops.c
@@ -38,24 +38,39 @@ otx2_cpt_metabuf_mempool_create(const struct rte_cryptodev 
*dev,
                                int nb_elements)
 {
        char mempool_name[RTE_MEMPOOL_NAMESIZE];
-       int sg_mlen, lb_mlen, max_mlen, ret;
        struct cpt_qp_meta_info *meta_info;
        struct rte_mempool *pool;
+       int ret, max_mlen;
+       int asym_mlen = 0;
+       int lb_mlen = 0;
+       int sg_mlen = 0;
 
-       /* Get meta len for scatter gather mode */
-       sg_mlen = cpt_pmd_ops_helper_get_mlen_sg_mode();
+       if (dev->feature_flags & RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO) {
 
-       /* Extra 32B saved for future considerations */
-       sg_mlen += 4 * sizeof(uint64_t);
+               /* Get meta len for scatter gather mode */
+               sg_mlen = cpt_pmd_ops_helper_get_mlen_sg_mode();
 
-       /* Get meta len for linear buffer (direct) mode */
-       lb_mlen = cpt_pmd_ops_helper_get_mlen_direct_mode();
+               /* Extra 32B saved for future considerations */
+               sg_mlen += 4 * sizeof(uint64_t);
 
-       /* Extra 32B saved for future considerations */
-       lb_mlen += 4 * sizeof(uint64_t);
+               /* Get meta len for linear buffer (direct) mode */
+               lb_mlen = cpt_pmd_ops_helper_get_mlen_direct_mode();
 
-       /* Check max requirement for meta buffer */
-       max_mlen = RTE_MAX(lb_mlen, sg_mlen);
+               /* Extra 32B saved for future considerations */
+               lb_mlen += 4 * sizeof(uint64_t);
+       }
+
+       if (dev->feature_flags & RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO) {
+
+               /* Get meta len required for asymmetric operations */
+               asym_mlen = cpt_pmd_ops_helper_asym_get_mlen();
+       }
+
+       /*
+        * Check max requirement for meta buffer to
+        * support crypto op of any type (sym/asym).
+        */
+       max_mlen = RTE_MAX(RTE_MAX(lb_mlen, sg_mlen), asym_mlen);
 
        /* Allocate mempool */
 
-- 
2.7.4

Reply via email to