Add crypto dequeue datapath configuration for zsda device.

Signed-off-by: Hanxiao Li <li.hanx...@zte.com.cn>
---
 drivers/crypto/zsda/zsda_sym.c     | 16 ++++++++++++++++
 drivers/crypto/zsda/zsda_sym.h     |  2 ++
 drivers/crypto/zsda/zsda_sym_pmd.c | 12 ++++++++++--
 3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/drivers/crypto/zsda/zsda_sym.c b/drivers/crypto/zsda/zsda_sym.c
index 0256d7e167..1224f2938a 100644
--- a/drivers/crypto/zsda/zsda_sym.c
+++ b/drivers/crypto/zsda/zsda_sym.c
@@ -254,3 +254,19 @@ zsda_hash_wqe_build(void *op_in, const struct zsda_queue 
*queue,
 
        return ret;
 }
+
+int
+zsda_crypto_callback(void *cookie_in, struct zsda_cqe *cqe)
+{
+       struct zsda_op_cookie *tmp_cookie = cookie_in;
+       struct rte_crypto_op *op = tmp_cookie->op;
+
+       if (!(CQE_ERR0(cqe->err0) || CQE_ERR1(cqe->err1)))
+               op->status = RTE_CRYPTO_OP_STATUS_SUCCESS;
+       else {
+               op->status = RTE_CRYPTO_OP_STATUS_ERROR;
+               return ZSDA_FAILED;
+       }
+
+       return ZSDA_SUCCESS;
+}
diff --git a/drivers/crypto/zsda/zsda_sym.h b/drivers/crypto/zsda/zsda_sym.h
index 2868480b17..8ceb27e076 100644
--- a/drivers/crypto/zsda/zsda_sym.h
+++ b/drivers/crypto/zsda/zsda_sym.h
@@ -42,4 +42,6 @@ int zsda_cipher_wqe_build(void *op_in, const struct 
zsda_queue *queue,
 int zsda_hash_wqe_build(void *op_in, const struct zsda_queue *queue,
                       void **op_cookies, const uint16_t new_tail);
 
+int zsda_crypto_callback(void *cookie_in, struct zsda_cqe *cqe);
+
 #endif /* _ZSDA_SYM_H_ */
diff --git a/drivers/crypto/zsda/zsda_sym_pmd.c 
b/drivers/crypto/zsda/zsda_sym_pmd.c
index 6f46c71e52..44c4521ba3 100644
--- a/drivers/crypto/zsda/zsda_sym_pmd.c
+++ b/drivers/crypto/zsda/zsda_sym_pmd.c
@@ -144,7 +144,7 @@ zsda_sym_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
        task_q_info.nb_des = nb_des;
        task_q_info.socket_id = socket_id;
        task_q_info.qp_id = qp_id;
-       task_q_info.rx_cb = NULL;
+       task_q_info.rx_cb = zsda_crypto_callback;
 
        task_q_info.type = ZSDA_SERVICE_SYMMETRIC_ENCRYPT;
        task_q_info.service_str = "sym_encrypt";
@@ -241,6 +241,14 @@ zsda_sym_pmd_enqueue_op_burst(void *qp, struct 
rte_crypto_op **ops,
                                     nb_ops);
 }
 
+static uint16_t
+zsda_sym_pmd_dequeue_op_burst(void *qp, struct rte_crypto_op **ops,
+                             uint16_t nb_ops)
+{
+       return zsda_dequeue_burst((struct zsda_qp *)qp, (void **)ops,
+                                    nb_ops);
+}
+
 int
 zsda_sym_dev_create(struct zsda_pci_device *zsda_pci_dev)
 {
@@ -280,7 +288,7 @@ zsda_sym_dev_create(struct zsda_pci_device *zsda_pci_dev)
        cryptodev->dev_ops = &crypto_zsda_ops;
 
        cryptodev->enqueue_burst = zsda_sym_pmd_enqueue_op_burst;
-       cryptodev->dequeue_burst = NULL;
+       cryptodev->dequeue_burst = zsda_sym_pmd_dequeue_op_burst;
        cryptodev->feature_flags = 0;
 
        sym_dev_priv = cryptodev->data->dev_private;
-- 
2.27.0

Reply via email to