From: root <root@localhost.localdomain>
Add crypto dequeue datapath configuration for zsda device.
Signed-off-by: Hanxiao Li <li.hanxiao@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 3ad90eb34c..139cbaaff1 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 c68bf8e2ed..cfbe8aa032 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 4ebadc5b0e..a3d0bac7a0 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