Skip to content

Commit

Permalink
IB/mthca: Fix off-by-one in mthca SRQ creation
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Michael S. Tsirkin authored and Roland Dreier committed Oct 10, 2006
1 parent 73fbe8b commit 2cbe19d
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions drivers/infiniband/hw/mthca/mthca_srq.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) +
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 2cbe19d

Please sign in to comment.