IB/mlx5: Report mlx5 CQE compression caps during query
The capabilities include: - Max number of compressed and aggregated CQEs in a single session, while zero means unsupported. - For Responder, there are two formats of mini CQE: mini CQE with Rx hash and mini CQE with checksum. They're mutual exclusive. Signed-off-by: Bodong Wang <bodong@mellanox.com> Reviewed-by: Matan Barak <matanb@mellanox.com> Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
Родитель
191ded4a4d
Коммит
7e43a2a5ba
|
@ -683,6 +683,16 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,
|
||||||
if (field_avail(typeof(resp), reserved, uhw->outlen))
|
if (field_avail(typeof(resp), reserved, uhw->outlen))
|
||||||
resp.response_length += sizeof(resp.reserved);
|
resp.response_length += sizeof(resp.reserved);
|
||||||
|
|
||||||
|
if (field_avail(typeof(resp), cqe_comp_caps, uhw->outlen)) {
|
||||||
|
resp.cqe_comp_caps.max_num =
|
||||||
|
MLX5_CAP_GEN(dev->mdev, cqe_compression) ?
|
||||||
|
MLX5_CAP_GEN(dev->mdev, cqe_compression_max_num) : 0;
|
||||||
|
resp.cqe_comp_caps.supported_format =
|
||||||
|
MLX5_IB_CQE_RES_FORMAT_HASH |
|
||||||
|
MLX5_IB_CQE_RES_FORMAT_CSUM;
|
||||||
|
resp.response_length += sizeof(resp.cqe_comp_caps);
|
||||||
|
}
|
||||||
|
|
||||||
if (uhw->outlen) {
|
if (uhw->outlen) {
|
||||||
err = ib_copy_to_udata(uhw, &resp, resp.response_length);
|
err = ib_copy_to_udata(uhw, &resp, resp.response_length);
|
||||||
|
|
||||||
|
|
|
@ -124,11 +124,23 @@ struct mlx5_ib_rss_caps {
|
||||||
__u8 reserved[7];
|
__u8 reserved[7];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum mlx5_ib_cqe_comp_res_format {
|
||||||
|
MLX5_IB_CQE_RES_FORMAT_HASH = 1 << 0,
|
||||||
|
MLX5_IB_CQE_RES_FORMAT_CSUM = 1 << 1,
|
||||||
|
MLX5_IB_CQE_RES_RESERVED = 1 << 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mlx5_ib_cqe_comp_caps {
|
||||||
|
__u32 max_num;
|
||||||
|
__u32 supported_format; /* enum mlx5_ib_cqe_comp_res_format */
|
||||||
|
};
|
||||||
|
|
||||||
struct mlx5_ib_query_device_resp {
|
struct mlx5_ib_query_device_resp {
|
||||||
__u32 comp_mask;
|
__u32 comp_mask;
|
||||||
__u32 response_length;
|
__u32 response_length;
|
||||||
struct mlx5_ib_tso_caps tso_caps;
|
struct mlx5_ib_tso_caps tso_caps;
|
||||||
struct mlx5_ib_rss_caps rss_caps;
|
struct mlx5_ib_rss_caps rss_caps;
|
||||||
|
struct mlx5_ib_cqe_comp_caps cqe_comp_caps;
|
||||||
__u32 mlx5_ib_support_multi_pkt_send_wqes;
|
__u32 mlx5_ib_support_multi_pkt_send_wqes;
|
||||||
__u32 reserved;
|
__u32 reserved;
|
||||||
};
|
};
|
||||||
|
|
Загрузка…
Ссылка в новой задаче