IB/mlx5: Set QP offsets and parameters for user QPs and not just for kernel QPs
authorHaggai Eran <haggaie@mellanox.com>
Thu, 22 May 2014 11:50:11 +0000 (14:50 +0300)
committerRoland Dreier <roland@purestorage.com>
Tue, 27 May 2014 18:53:08 +0000 (11:53 -0700)
For user QPs, the creation process does not currently initialize the fields:

 * qp->rq.offset
 * qp->sq.offset
 * qp->sq.wqe_shift

Signed-off-by: Haggai Eran <haggaie@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/mlx5/qp.c

index a89f70473fb72903b111f41d3ea7878bb94495f7..d13ddf1c0033385f9b2d6b5dadac29d87aaeaf45 100644 (file)
@@ -574,6 +574,10 @@ static int create_user_qp(struct mlx5_ib_dev *dev, struct ib_pd *pd,
        uar_index = uuarn_to_uar_index(&context->uuari, uuarn);
        mlx5_ib_dbg(dev, "uuarn 0x%x, uar_index 0x%x\n", uuarn, uar_index);
 
+       qp->rq.offset = 0;
+       qp->sq.wqe_shift = ilog2(MLX5_SEND_WQE_BB);
+       qp->sq.offset = qp->rq.wqe_cnt << qp->rq.wqe_shift;
+
        err = set_user_buf_size(dev, qp, &ucmd);
        if (err)
                goto err_uuar;