From 05b65d96296f07baca079acef1a5bbb3c71fffb6 Mon Sep 17 00:00:00 2001
From: Selvin Xavier <selvin.xavier@broadcom.com>
Date: Wed, 17 Jul 2024 10:34:23 +0800
Subject: [PATCH] Fix the stride calculation for MSN/PSN area [ Upstream commit
 65197a4 ] Library expects ilog2 of psn_size while calculating the stride.
 ilog32 returns log2(v) + 1 and the calculation fails since the psn size is a
 power of 2 value. Fix by passing psn_size - 1.

Fixes: 0a0e0d0 ("bnxt_re/lib: Adds MSN table capability for Gen P7 adapters")
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Nicolas Morey <nmorey@suse.com>
---
 providers/bnxt_re/verbs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/providers/bnxt_re/verbs.c b/providers/bnxt_re/verbs.c
index 55d5284..a74d32c 100644
--- a/providers/bnxt_re/verbs.c
+++ b/providers/bnxt_re/verbs.c
@@ -1233,7 +1233,7 @@ static int bnxt_re_alloc_queues(struct bnxt_re_context *cntx,
 	/* psn_depth extra entries of size que->stride */
 	psn_size = bnxt_re_get_psne_size(qp->cntx);
 	psn_depth = (nswr * psn_size) / que->stride;
-	que->pad_stride_log2 = (uint32_t)ilog32(psn_size);
+	que->pad_stride_log2 = ilog32(psn_size - 1);
 	if ((nswr * psn_size) % que->stride)
 		psn_depth++;
 	que->depth += psn_depth;
-- 
2.27.0

