Crypto callbacks are invoked on checking from head node
which is always valid pointer.

This patch checks next node from the head node if callbacks
registered before invoking callbacks.

Fixes: 1c3ffb95595e ("cryptodev: add enqueue and dequeue callbacks")

Signed-off-by: Ganapati Kundapura <ganapati.kundap...@intel.com>

---
v3: retained ifdef

diff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.h
index c946f74..bec947f 100644
--- a/lib/cryptodev/rte_cryptodev.h
+++ b/lib/cryptodev/rte_cryptodev.h
@@ -1910,7 +1910,7 @@ rte_cryptodev_dequeue_burst(uint8_t dev_id, uint16_t 
qp_id,
        nb_ops = fp_ops->dequeue_burst(qp, ops, nb_ops);
 
 #ifdef RTE_CRYPTO_CALLBACKS
-       if (unlikely(fp_ops->qp.deq_cb != NULL)) {
+       if (unlikely(fp_ops->qp.deq_cb[qp_id].next != NULL)) {
                struct rte_cryptodev_cb_rcu *list;
                struct rte_cryptodev_cb *cb;
 
@@ -1977,7 +1977,7 @@ rte_cryptodev_enqueue_burst(uint8_t dev_id, uint16_t 
qp_id,
        fp_ops = &rte_crypto_fp_ops[dev_id];
        qp = fp_ops->qp.data[qp_id];
 #ifdef RTE_CRYPTO_CALLBACKS
-       if (unlikely(fp_ops->qp.enq_cb != NULL)) {
+       if (unlikely(fp_ops->qp.enq_cb[qp_id].next != NULL)) {
                struct rte_cryptodev_cb_rcu *list;
                struct rte_cryptodev_cb *cb;
 
-- 
2.6.4

Reply via email to