From: Shani Peretz <shper...@nvidia.com>

This patch logs and aborts when mbuf segment count exceeding max_segs_num.
The log message suggests the user to either increase the segment size
or set a higher value for the max_segs_num devarg.

Fixes: b01095830734 ("crypto/mlx5: add GCM enqueue/dequeue operations")

Signed-off-by: Shani Peretz <shper...@nvidia.com>
---
 drivers/crypto/mlx5/mlx5_crypto_gcm.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/mlx5/mlx5_crypto_gcm.c 
b/drivers/crypto/mlx5/mlx5_crypto_gcm.c
index 89f32c7722..d7156a6abc 100644
--- a/drivers/crypto/mlx5/mlx5_crypto_gcm.c
+++ b/drivers/crypto/mlx5/mlx5_crypto_gcm.c
@@ -554,7 +554,15 @@ mlx5_crypto_gcm_build_mbuf_chain_klms(struct 
mlx5_crypto_qp *qp,
        uint32_t klm_n = 0;
 
        /* mbuf seg num should be less than max_segs_num. */
-       MLX5_ASSERT(nb_segs <= qp->priv->max_segs_num);
+       if (nb_segs > qp->priv->max_segs_num) {
+               DRV_LOG(WARNING, "Segment count exceeds limit. "
+                               "Current segments: %d, Maximum allowed: %d. "
+                               "To resolve, either increase the segment size "
+                               "or set a higher value for the devargs 
max_segs_num parameter.",
+                       nb_segs, qp->priv->max_segs_num);
+               RTE_VERIFY(nb_segs <= qp->priv->max_segs_num);
+               return 0;
+       }
        /* First mbuf needs to take the data offset. */
        if (unlikely(_mlx5_crypto_gcm_umr_build_mbuf_klm(qp, mbuf, klm,
                     op->sym->aead.data.offset, &remain_len) == UINT32_MAX)) {
-- 
2.45.2

Reply via email to