From: Rupesh Chiluka <rchil...@marvell.com>

Add asymmetric sessionless handling for cnxk

Signed-off-by: Rupesh Chiluka <rchil...@marvell.com>
---
 drivers/crypto/cnxk/cn10k_cryptodev_ops.c | 19 +++++++++++++++++--
 drivers/crypto/cnxk/cn9k_cryptodev_ops.c  | 20 ++++++++++++++++++--
 2 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/drivers/crypto/cnxk/cn10k_cryptodev_ops.c 
b/drivers/crypto/cnxk/cn10k_cryptodev_ops.c
index 9ad0629519..813a2deb66 100644
--- a/drivers/crypto/cnxk/cn10k_cryptodev_ops.c
+++ b/drivers/crypto/cnxk/cn10k_cryptodev_ops.c
@@ -417,8 +417,23 @@ cn10k_ca_meta_info_extract(struct rte_crypto_op *op, 
struct cnxk_cpt_qp **qp, ui
                        priv = (struct cnxk_ae_sess *)op->asym->session;
                        *qp = priv->qp;
                        *w2 = priv->cpt_inst_w2;
-               } else
-                       return -EINVAL;
+               } else {
+                       union rte_event_crypto_metadata *ec_mdata;
+                       struct rte_event *rsp_info;
+                       uint8_t cdev_id;
+                       uint16_t qp_id;
+
+                       if (unlikely(op->private_data_offset == 0))
+                               return -EINVAL;
+                       ec_mdata = (union rte_event_crypto_metadata *)((uint8_t 
*)op +
+                                                                      
op->private_data_offset);
+                       rsp_info = &ec_mdata->response_info;
+                       cdev_id = ec_mdata->request_info.cdev_id;
+                       qp_id = ec_mdata->request_info.queue_pair_id;
+                       *qp = rte_cryptodevs[cdev_id].data->queue_pairs[qp_id];
+                       *w2 = CNXK_CPT_INST_W2((RTE_EVENT_TYPE_CRYPTODEV << 28) 
| rsp_info->flow_id,
+                                              rsp_info->sched_type, 
rsp_info->queue_id, 0);
+               }
        } else
                return -EINVAL;
 
diff --git a/drivers/crypto/cnxk/cn9k_cryptodev_ops.c 
b/drivers/crypto/cnxk/cn9k_cryptodev_ops.c
index ee35ed1eba..fa22b5ce44 100644
--- a/drivers/crypto/cnxk/cn9k_cryptodev_ops.c
+++ b/drivers/crypto/cnxk/cn9k_cryptodev_ops.c
@@ -333,8 +333,24 @@ cn9k_ca_meta_info_extract(struct rte_crypto_op *op,
                        priv = (struct cnxk_ae_sess *)op->asym->session;
                        *qp = priv->qp;
                        inst->w2.u64 = priv->cpt_inst_w2;
-               } else
-                       return -EINVAL;
+               } else {
+                       union rte_event_crypto_metadata *ec_mdata;
+                       struct rte_event *rsp_info;
+                       uint8_t cdev_id;
+                       uint16_t qp_id;
+
+                       if (unlikely(op->private_data_offset == 0))
+                               return -EINVAL;
+                       ec_mdata = (union rte_event_crypto_metadata *)((uint8_t 
*)op +
+                                                                      
op->private_data_offset);
+                       rsp_info = &ec_mdata->response_info;
+                       cdev_id = ec_mdata->request_info.cdev_id;
+                       qp_id = ec_mdata->request_info.queue_pair_id;
+                       *qp = rte_cryptodevs[cdev_id].data->queue_pairs[qp_id];
+                       inst->w2.u64 = CNXK_CPT_INST_W2(
+                               (RTE_EVENT_TYPE_CRYPTODEV << 28) | 
rsp_info->flow_id,
+                               rsp_info->sched_type, rsp_info->queue_id, 0);
+               }
        } else
                return -EINVAL;
 
-- 
2.25.1

Reply via email to