On Fri, Jul 05, 2019 at 07:21:57PM +0300, Leon Romanovsky wrote: > From: Danit Goldberg <danitg@xxxxxxxxxxxx> > > Tag matching with rendezvous offload for RC transport is controlled > by FW and before this change, it was advertised to user as supported > without any relation to FW. > > Separate tag matching for rendezvous and eager protocols, so users > will see real capabilities. > > Cc: <stable@xxxxxxxxxxxxxxx> # 4.13 > Fixes: eb761894351d ("IB/mlx5: Fill XRQ capabilities") > Signed-off-by: Danit Goldberg <danitg@xxxxxxxxxxxx> > Reviewed-by: Yishai Hadas <yishaih@xxxxxxxxxxxx> > Reviewed-by: Artemy Kovalyov <artemyko@xxxxxxxxxxxx> > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > drivers/infiniband/hw/mlx5/main.c | 8 ++++++-- > include/rdma/ib_verbs.h | 4 ++-- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c > index 07a05b0b9e42..c2a5780cb394 100644 > +++ b/drivers/infiniband/hw/mlx5/main.c > @@ -1046,15 +1046,19 @@ static int mlx5_ib_query_device(struct ib_device *ibdev, > } > > if (MLX5_CAP_GEN(mdev, tag_matching)) { > - props->tm_caps.max_rndv_hdr_size = MLX5_TM_MAX_RNDV_MSG_SIZE; > props->tm_caps.max_num_tags = > (1 << MLX5_CAP_GEN(mdev, log_tag_matching_list_sz)) - 1; > - props->tm_caps.flags = IB_TM_CAP_RC; > props->tm_caps.max_ops = > 1 << MLX5_CAP_GEN(mdev, log_max_qp_sz); > props->tm_caps.max_sge = MLX5_TM_MAX_SGE; > } > > + if (MLX5_CAP_GEN(mdev, tag_matching) && > + MLX5_CAP_GEN(mdev, rndv_offload_rc)) { > + props->tm_caps.flags = IB_TM_CAP_RNDV_RC; > + props->tm_caps.max_rndv_hdr_size = MLX5_TM_MAX_RNDV_MSG_SIZE; > + } > + > if (MLX5_CAP_GEN(dev->mdev, cq_moderation)) { > props->cq_caps.max_cq_moderation_count = > MLX5_MAX_CQ_COUNT; > diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h > index 30eb68f36109..c5f8a9f17063 100644 > +++ b/include/rdma/ib_verbs.h > @@ -308,8 +308,8 @@ struct ib_rss_caps { > }; > > enum ib_tm_cap_flags { > - /* Support tag matching on RC transport */ > - IB_TM_CAP_RC = 1 << 0, > + /* Support tag matching with rendezvous offload for RC transport */ > + IB_TM_CAP_RNDV_RC = 1 << 0, > }; This is in the wrong header, right? Jason