aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Morgenstein <jackm@dev.mellanox.co.il>2009-12-17 17:15:40 +0200
committerRoland Dreier <rolandd@cisco.com>2010-02-08 09:08:06 -0800
commitc142d49388aeb6ef28c41f31857aeaea87e81caa (patch)
tree7c80a76ec9c8476f17f4d2da803305f38a129718
parent444f634f38155fa84224eaa260753811455fee71 (diff)
downloadlibmlx4-c142d49388aeb6ef28c41f31857aeaea87e81caa.tar.gz
Initialize SRQ scatter entries when creating an SRQ
ConnectX requires SRQ WQE scatter entries to be initialized with the invalid L_Key at SRQ creation time. Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r--src/srq.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/srq.c b/src/srq.c
index ba2ceb9..f1d1240 100644
--- a/src/srq.c
+++ b/src/srq.c
@@ -128,6 +128,7 @@ int mlx4_alloc_srq_buf(struct ibv_pd *pd, struct ibv_srq_attr *attr,
struct mlx4_srq *srq)
{
struct mlx4_wqe_srq_next_seg *next;
+ struct mlx4_wqe_data_seg *scatter;
int size;
int buf_size;
int i;
@@ -160,6 +161,11 @@ int mlx4_alloc_srq_buf(struct ibv_pd *pd, struct ibv_srq_attr *attr,
for (i = 0; i < srq->max; ++i) {
next = get_wqe(srq, i);
next->next_wqe_index = htons((i + 1) & (srq->max - 1));
+
+ for (scatter = (void *) (next + 1);
+ (void *) scatter < (void *) next + (1 << srq->wqe_shift);
+ ++scatter)
+ scatter->lkey = htonl(MLX4_INVALID_LKEY);
}
srq->head = 0;