IB/mthca: Fix off-by-one in mthca SRQ creation
authorMichael S. Tsirkin <mst@mellanox.co.il>
Mon, 9 Oct 2006 16:06:32 +0000 (18:06 +0200)
committerRoland Dreier <rolandd@cisco.com>
Tue, 10 Oct 2006 19:50:38 +0000 (12:50 -0700)
All HCAs (not just mem-free) need a spare SRQ entry, so bump srq->max
by 1 in all cases.

Noted by Jack Morgenstein <jackm@mellanox.co.il>

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/mthca/mthca_srq.c

index 0f316c8..92a72f5 100644 (file)
@@ -201,6 +201,8 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd,
 
        if (mthca_is_memfree(dev))
                srq->max = roundup_pow_of_two(srq->max + 1);
+       else
+               srq->max = srq->max + 1;
 
        ds = max(64UL,
                 roundup_pow_of_two(sizeof (struct mthca_next_seg) +
@@ -277,7 +279,7 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd,
        srq->first_free = 0;
        srq->last_free  = srq->max - 1;
 
-       attr->max_wr    = (mthca_is_memfree(dev)) ? srq->max - 1 : srq->max;
+       attr->max_wr    = srq->max - 1;
        attr->max_sge   = srq->max_gs;
 
        return 0;
@@ -413,7 +415,7 @@ int mthca_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *srq_attr)
                srq_attr->srq_limit = be16_to_cpu(tavor_ctx->limit_watermark);
        }
 
-       srq_attr->max_wr  = (mthca_is_memfree(dev)) ? srq->max - 1 : srq->max;
+       srq_attr->max_wr  = srq->max - 1;
        srq_attr->max_sge = srq->max_gs;
 
 out: