Commit 7211b040 authored by Danit Goldberg's avatar Danit Goldberg Committed by Greg Kroah-Hartman

IB/mlx5: Report correctly tag matching rendezvous capability

commit 89705e92 upstream.

Userspace expects the IB_TM_CAP_RC bit to indicate that the device
supports RC transport tag matching with rendezvous offload. However the
firmware splits this into two capabilities for eager and rendezvous tag
matching.

Only if the FW supports both modes should userspace be told the tag
matching capability is available.

Cc: <stable@vger.kernel.org> # 4.13
Fixes: eb761894 ("IB/mlx5: Fill XRQ capabilities")
Signed-off-by: default avatarDanit Goldberg <danitg@mellanox.com>
Reviewed-by: default avatarYishai Hadas <yishaih@mellanox.com>
Reviewed-by: default avatarArtemy Kovalyov <artemyko@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 55d036c1
...@@ -1041,15 +1041,19 @@ static int mlx5_ib_query_device(struct ib_device *ibdev, ...@@ -1041,15 +1041,19 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,
} }
if (MLX5_CAP_GEN(mdev, tag_matching)) { 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 = props->tm_caps.max_num_tags =
(1 << MLX5_CAP_GEN(mdev, log_tag_matching_list_sz)) - 1; (1 << MLX5_CAP_GEN(mdev, log_tag_matching_list_sz)) - 1;
props->tm_caps.flags = IB_TM_CAP_RC;
props->tm_caps.max_ops = props->tm_caps.max_ops =
1 << MLX5_CAP_GEN(mdev, log_max_qp_sz); 1 << MLX5_CAP_GEN(mdev, log_max_qp_sz);
props->tm_caps.max_sge = MLX5_TM_MAX_SGE; 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)) { if (MLX5_CAP_GEN(dev->mdev, cq_moderation)) {
props->cq_caps.max_cq_moderation_count = props->cq_caps.max_cq_moderation_count =
MLX5_MAX_CQ_COUNT; MLX5_MAX_CQ_COUNT;
......
...@@ -293,8 +293,8 @@ struct ib_rss_caps { ...@@ -293,8 +293,8 @@ struct ib_rss_caps {
}; };
enum ib_tm_cap_flags { enum ib_tm_cap_flags {
/* Support tag matching on RC transport */ /* Support tag matching with rendezvous offload for RC transport */
IB_TM_CAP_RC = 1 << 0, IB_TM_CAP_RNDV_RC = 1 << 0,
}; };
struct ib_tm_caps { struct ib_tm_caps {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment