Currently only one qp will be used for one core. The number of qps can
be increased to match the number of lcore params.

Signed-off-by: Anoob Joseph <ano...@marvell.com>
---
 examples/ipsec-secgw/ipsec-secgw.c | 39 +++++++++++++++++++-------------------
 examples/ipsec-secgw/ipsec.h       |  4 +++-
 2 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/examples/ipsec-secgw/ipsec-secgw.c 
b/examples/ipsec-secgw/ipsec-secgw.c
index 3b5aaf6..d8c435e 100644
--- a/examples/ipsec-secgw/ipsec-secgw.c
+++ b/examples/ipsec-secgw/ipsec-secgw.c
@@ -1709,6 +1709,8 @@ add_mapping(struct rte_hash *map, const char *str, 
uint16_t cdev_id,
        unsigned long i;
        struct cdev_key key = { 0 };
 
+       key.port_id = params->port_id;
+       key.queue_id = params->queue_id;
        key.lcore_id = params->lcore_id;
        if (cipher)
                key.cipher_algo = cipher->sym.cipher.algo;
@@ -1721,23 +1723,17 @@ add_mapping(struct rte_hash *map, const char *str, 
uint16_t cdev_id,
        if (ret != -ENOENT)
                return 0;
 
-       for (i = 0; i < ipsec_ctx->nb_qps; i++)
-               if (ipsec_ctx->tbl[i].id == cdev_id)
-                       break;
-
-       if (i == ipsec_ctx->nb_qps) {
-               if (ipsec_ctx->nb_qps == MAX_QP_PER_LCORE) {
-                       printf("Maximum number of crypto devices assigned to "
-                               "a core, increase MAX_QP_PER_LCORE value\n");
-                       return 0;
-               }
-               ipsec_ctx->tbl[i].id = cdev_id;
-               ipsec_ctx->tbl[i].qp = qp;
-               ipsec_ctx->nb_qps++;
-               printf("%s cdev mapping: lcore %u using cdev %u qp %u "
-                               "(cdev_id_qp %lu)\n", str, key.lcore_id,
-                               cdev_id, qp, i);
+       i = ipsec_ctx->nb_qps;
+       if (ipsec_ctx->nb_qps == MAX_QP_PER_LCORE) {
+               printf("Maximum number of crypto devices assigned to a core, "
+                      "increase MAX_QP_PER_LCORE value\n");
+               return 0;
        }
+       ipsec_ctx->tbl[i].id = cdev_id;
+       ipsec_ctx->tbl[i].qp = qp;
+       ipsec_ctx->nb_qps++;
+       printf("%s cdev mapping: lcore %u using cdev %u qp %u "
+              "(cdev_id_qp %lu)\n", str, key.lcore_id, cdev_id, qp, i);
 
        ret = rte_hash_add_key_data(map, &key, (void *)i);
        if (ret < 0) {
@@ -1785,8 +1781,10 @@ add_cdev_mapping(struct rte_cryptodev_info *dev_info, 
uint16_t cdev_id,
                        continue;
 
                if (i->sym.xform_type == RTE_CRYPTO_SYM_XFORM_AEAD) {
-                       ret |= add_mapping(map, str, cdev_id, qp, params,
+                       ret = add_mapping(map, str, cdev_id, qp, params,
                                        ipsec_ctx, NULL, NULL, i);
+                       if (ret)
+                               return ret;
                        continue;
                }
 
@@ -1801,12 +1799,15 @@ add_cdev_mapping(struct rte_cryptodev_info *dev_info, 
uint16_t cdev_id,
                        if (j->sym.xform_type != RTE_CRYPTO_SYM_XFORM_AUTH)
                                continue;
 
-                       ret |= add_mapping(map, str, cdev_id, qp, params,
+                       ret = add_mapping(map, str, cdev_id, qp, params,
                                                ipsec_ctx, i, j, NULL);
+                       if (ret)
+                               return ret;
+                       continue;
                }
        }
 
-       return ret;
+       return 0;
 }
 
 /* Check if the device is enabled by cryptodev_mask */
diff --git a/examples/ipsec-secgw/ipsec.h b/examples/ipsec-secgw/ipsec.h
index 8e07521..92fd5eb 100644
--- a/examples/ipsec-secgw/ipsec.h
+++ b/examples/ipsec-secgw/ipsec.h
@@ -200,7 +200,9 @@ struct ipsec_ctx {
 };
 
 struct cdev_key {
-       uint16_t lcore_id;
+       uint16_t port_id;
+       uint8_t queue_id;
+       uint8_t lcore_id;
        uint8_t cipher_algo;
        uint8_t auth_algo;
        uint8_t aead_algo;
-- 
2.7.4

Reply via email to