[PATCH v3 19/29] crypto/cnxk: fix inflight cnt calculation
Anoob Joseph
anoobj at marvell.com
Fri Dec 17 10:20:01 CET 2021
Inflight count calculation is updated to cover wrap around cases where
head can become smaller than tail.
Reported-by: Kiran Kumar K <kirankumark at marvell.com>
Signed-off-by: Anoob Joseph <anoobj at marvell.com>
---
drivers/crypto/cnxk/cnxk_cryptodev_ops.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/crypto/cnxk/cnxk_cryptodev_ops.h b/drivers/crypto/cnxk/cnxk_cryptodev_ops.h
index ca363bb..0336ae1 100644
--- a/drivers/crypto/cnxk/cnxk_cryptodev_ops.h
+++ b/drivers/crypto/cnxk/cnxk_cryptodev_ops.h
@@ -156,7 +156,11 @@ pending_queue_retreat(uint64_t *index, const uint64_t mask, uint64_t nb_entry)
static __rte_always_inline uint64_t
pending_queue_infl_cnt(uint64_t head, uint64_t tail, const uint64_t mask)
{
- return (head - tail) & mask;
+ /*
+ * Mask is nb_desc - 1. Add nb_desc to head and mask to account for
+ * cases when tail > head, which happens during wrap around.
+ */
+ return ((head + mask + 1) - tail) & mask;
}
static __rte_always_inline uint64_t
--
2.7.4
More information about the dev
mailing list