[ofa-general] [PATCH 3 OF 5] libmlx4: avoid adding unneeded extra CQE when creating a cq

Jack Morgenstein jackm at dev.mellanox.co.il
Wed Oct 24 09:54:09 PDT 2007


Do not add an extra CQE when creating a CQ.
Sanity-check against returned device capabilities,
to avoid breaking ABI.

Set minimum to 2, to avoid rejection by kernel.
    
Signed-off-by: Jack Morgenstein <jackm at dev.mellanox.co.il>

diff --git a/src/verbs.c b/src/verbs.c
index 059b534..4e92ec7 100644
--- a/src/verbs.c
+++ b/src/verbs.c
@@ -168,11 +168,15 @@ struct ibv_cq *mlx4_create_cq(struct ibv_context *context, int cqe,
 	struct mlx4_create_cq_resp resp;
 	struct mlx4_cq		  *cq;
 	int			   ret;
+	struct mlx4_context	  *mctx = to_mctx(context);
 
 	/* Sanity check CQ size before proceeding */
-	if (cqe > 0x3fffff)
+	if (cqe < 1 || cqe > mctx->max_cqe)
 		return NULL;
 
+	/* raise minimum, to avoid breaking ABI */
+	cqe = (cqe == 1) ? 2 : cqe;
+
 	cq = malloc(sizeof *cq);
 	if (!cq)
 		return NULL;
@@ -182,7 +186,7 @@ struct ibv_cq *mlx4_create_cq(struct ibv_context *context, int cqe,
 	if (pthread_spin_init(&cq->lock, PTHREAD_PROCESS_PRIVATE))
 		goto err;
 
-	cqe = align_queue_size(cqe + 1);
+	cqe = align_queue_size(cqe);
 
 	if (mlx4_alloc_buf(&cq->buf, cqe * MLX4_CQ_ENTRY_SIZE,
 			   to_mdev(context->device)->page_size))



More information about the general mailing list