mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
IB/mlx5: Expose multi-packet RQ capabilities
This patch reports the device's striding RQ capabilities to the user-space: - min/max_single_stride_log_num_of_bytes: Log of min/max number of bytes in a single stride. - min/max_single_wqe_log_num_of_strides: Log of min/max number of strides in a single WQE. - supported_qpts: A bit mask to know which QP types support multi- packet RQ, for now only Raw Packet QPs. Signed-off-by: Noa Osherovich <noaos@mellanox.com> Reviewed-by: Majd Dibbiny <majd@mellanox.com> Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
b156269d88
commit
b4f34597a5
3 changed files with 35 additions and 0 deletions
|
@ -848,6 +848,22 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,
|
|||
}
|
||||
}
|
||||
|
||||
if (field_avail(typeof(resp), striding_rq_caps, uhw->outlen)) {
|
||||
resp.response_length += sizeof(resp.striding_rq_caps);
|
||||
if (MLX5_CAP_GEN(mdev, striding_rq)) {
|
||||
resp.striding_rq_caps.min_single_stride_log_num_of_bytes =
|
||||
MLX5_MIN_SINGLE_STRIDE_LOG_NUM_BYTES;
|
||||
resp.striding_rq_caps.max_single_stride_log_num_of_bytes =
|
||||
MLX5_MAX_SINGLE_STRIDE_LOG_NUM_BYTES;
|
||||
resp.striding_rq_caps.min_single_wqe_log_num_of_strides =
|
||||
MLX5_MIN_SINGLE_WQE_LOG_NUM_STRIDES;
|
||||
resp.striding_rq_caps.max_single_wqe_log_num_of_strides =
|
||||
MLX5_MAX_SINGLE_WQE_LOG_NUM_STRIDES;
|
||||
resp.striding_rq_caps.supported_qpts =
|
||||
BIT(IB_QPT_RAW_PACKET);
|
||||
}
|
||||
}
|
||||
|
||||
if (uhw->outlen) {
|
||||
err = ib_copy_to_udata(uhw, &resp, resp.response_length);
|
||||
|
||||
|
|
|
@ -256,6 +256,11 @@ enum mlx5_ib_wq_flags {
|
|||
MLX5_IB_WQ_FLAGS_DELAY_DROP = 0x1,
|
||||
};
|
||||
|
||||
#define MLX5_MIN_SINGLE_WQE_LOG_NUM_STRIDES 9
|
||||
#define MLX5_MAX_SINGLE_WQE_LOG_NUM_STRIDES 16
|
||||
#define MLX5_MIN_SINGLE_STRIDE_LOG_NUM_BYTES 6
|
||||
#define MLX5_MAX_SINGLE_STRIDE_LOG_NUM_BYTES 13
|
||||
|
||||
struct mlx5_ib_rwq {
|
||||
struct ib_wq ibwq;
|
||||
struct mlx5_core_qp core_qp;
|
||||
|
|
|
@ -190,6 +190,19 @@ struct mlx5_ib_sw_parsing_caps {
|
|||
__u32 supported_qpts;
|
||||
};
|
||||
|
||||
struct mlx5_ib_striding_rq_caps {
|
||||
__u32 min_single_stride_log_num_of_bytes;
|
||||
__u32 max_single_stride_log_num_of_bytes;
|
||||
__u32 min_single_wqe_log_num_of_strides;
|
||||
__u32 max_single_wqe_log_num_of_strides;
|
||||
|
||||
/* Corresponding bit will be set if qp type from
|
||||
* 'enum ib_qp_type' is supported, e.g.
|
||||
* supported_qpts |= 1 << IB_QPT_RAW_PACKET
|
||||
*/
|
||||
__u32 supported_qpts;
|
||||
};
|
||||
|
||||
struct mlx5_ib_query_device_resp {
|
||||
__u32 comp_mask;
|
||||
__u32 response_length;
|
||||
|
@ -200,6 +213,7 @@ struct mlx5_ib_query_device_resp {
|
|||
__u32 mlx5_ib_support_multi_pkt_send_wqes;
|
||||
__u32 reserved;
|
||||
struct mlx5_ib_sw_parsing_caps sw_parsing_caps;
|
||||
struct mlx5_ib_striding_rq_caps striding_rq_caps;
|
||||
};
|
||||
|
||||
struct mlx5_ib_create_cq {
|
||||
|
|
Loading…
Reference in a new issue