diff options
| author | Eli Cohen <eli@dev.mellanox.co.il> | 2014-04-02 01:10:16 +0400 | 
|---|---|---|
| committer | Roland Dreier <roland@purestorage.com> | 2014-04-11 05:43:32 +0400 | 
| commit | f360d88a2efddf2d2a2d01a8ac76fded34d624b4 (patch) | |
| tree | 9ca4486f3bbd72018b5876a60ce2a351e5045271 /drivers/infiniband/hw/mlx5/qp.c | |
| parent | 877f075aac900288ce2e6a64075cceff09210a7e (diff) | |
| download | linux-f360d88a2efddf2d2a2d01a8ac76fded34d624b4.tar.xz | |
IB/mlx5: Add block multicast loopback support
Add support for the block multicast loopback QP creation flag along
the proper firmware API for that.
Signed-off-by: Eli Cohen <eli@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/hw/mlx5/qp.c')
| -rw-r--r-- | drivers/infiniband/hw/mlx5/qp.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c index ae788d27b93f..dc930ed21eca 100644 --- a/drivers/infiniband/hw/mlx5/qp.c +++ b/drivers/infiniband/hw/mlx5/qp.c @@ -807,6 +807,15 @@ static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd,  	spin_lock_init(&qp->sq.lock);  	spin_lock_init(&qp->rq.lock); +	if (init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK) { +		if (!(dev->mdev.caps.flags & MLX5_DEV_CAP_FLAG_BLOCK_MCAST)) { +			mlx5_ib_dbg(dev, "block multicast loopback isn't supported\n"); +			return -EINVAL; +		} else { +			qp->flags |= MLX5_IB_QP_BLOCK_MULTICAST_LOOPBACK; +		} +	} +  	if (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR)  		qp->sq_signal_bits = MLX5_WQE_CTRL_CQ_UPDATE; @@ -878,6 +887,9 @@ static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd,  	if (qp->wq_sig)  		in->ctx.flags_pd |= cpu_to_be32(MLX5_QP_ENABLE_SIG); +	if (qp->flags & MLX5_IB_QP_BLOCK_MULTICAST_LOOPBACK) +		in->ctx.flags_pd |= cpu_to_be32(MLX5_QP_BLOCK_MCAST); +  	if (qp->scat_cqe && is_connected(init_attr->qp_type)) {  		int rcqe_sz;  		int scqe_sz;  | 
