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