IB/mlx5: Add driver cross-channel support
Add support of cross-channel functionality to mlx5 driver. This includes ability to ignore overrun for CQ which intended for cross-channel, export device capability and configure the QP to be sync master/slave queues. The cross-channel enabled QP supports combination of three possible properties: * WQE processing on the receive queue of this QP * WQE processing on the send queue of this QP * WQE are supported on the send queue Reviewed-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:

committed by
Doug Ledford

parent
8a06ce59a4
commit
051f263098
@@ -778,7 +778,7 @@ struct ib_cq *mlx5_ib_create_cq(struct ib_device *ibdev,
|
||||
int eqn;
|
||||
int err;
|
||||
|
||||
if (attr->flags)
|
||||
if (check_cq_create_flags(attr->flags))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
if (entries < 0)
|
||||
@@ -800,6 +800,7 @@ struct ib_cq *mlx5_ib_create_cq(struct ib_device *ibdev,
|
||||
spin_lock_init(&cq->lock);
|
||||
cq->resize_buf = NULL;
|
||||
cq->resize_umem = NULL;
|
||||
cq->create_flags = attr->flags;
|
||||
|
||||
if (context) {
|
||||
err = create_cq_user(dev, udata, context, cq, entries,
|
||||
@@ -817,6 +818,10 @@ struct ib_cq *mlx5_ib_create_cq(struct ib_device *ibdev,
|
||||
|
||||
cq->cqe_size = cqe_size;
|
||||
cqb->ctx.cqe_sz_flags = cqe_sz_to_mlx_sz(cqe_size) << 5;
|
||||
|
||||
if (cq->create_flags & IB_CQ_FLAGS_IGNORE_OVERRUN)
|
||||
cqb->ctx.cqe_sz_flags |= (1 << 1);
|
||||
|
||||
cqb->ctx.log_sz_usr_page = cpu_to_be32((ilog2(entries) << 24) | index);
|
||||
err = mlx5_vector2eqn(dev->mdev, vector, &eqn, &irqn);
|
||||
if (err)
|
||||
|
Reference in New Issue
Block a user