Patch "IB/mlx5: Expose correct max_sge_rd limit" has been added to the 4.5-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
IB/mlx5: Expose correct max_sge_rd limit
to the 4.5-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ib-mlx5-expose-correct-max_sge_rd-limit.patch
and it can be found in the queue-4.5 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
986ef95ecdd3eb6fa29433e68faa94c7624083beMon Sep 17 00:00:00 2001
From: Sagi Grimberg <[email protected]>
Date: Thu, 31 Mar 2016 19:03:25 +0300
Subject: IB/mlx5: Expose correct max_sge_rd limit
From: Sagi Grimberg <[email protected]>
commit 986ef95ecdd3eb6fa29433e68faa94c7624083be upstream.
mlx5 devices (Connect-IB, ConnectX-4, ConnectX-4-LX) has a limitation where rdma read work queue entries cannot exceed 512 bytes. A rdma_read wqe needs to fit in 512 bytes:
- wqe control segment (16 bytes)
- rdma segment (16 bytes)
- scatter elements (16 bytes each)
So max_sge_rd should be: (512 - 16 - 16) / 16 = 30.
--- drivers/infiniband/hw/mlx5/main.c | 2 +- include/linux/mlx5/device.h | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-)
drivers/infiniband/hw/mlx5/main.c +1 -1
@@ -517,7 +517,7 @@ static int mlx5_ib_query_device(struct i sizeof(struct mlx5_wqe_ctrl_seg)) /sizeof (struct mlx5_wqe_data_seg ); props->max_sge =min (max_rq_sg, max_sq_sg); - props->max_sge_rd = props->max_sge; + props->max_sge_rd =MLX5_MAX_SGE_RD ; props->max_cq =1 <<MLX5_CAP_GEN (mdev, log_max_cq); props->max_cqe = (1 <<MLX5_CAP_GEN (mdev, log_max_cq_sz)) -1 ; props->max_mr =1 <<MLX5_CAP_GEN (mdev, log_max_mkey);
include/linux/mlx5/device.h +11 -0
@@ -363,6 +363,17 @@ enum { MLX5_CAP_OFF_CMDIF_CSUM = 46, }; +enum { +/* +* Max wqe size for rdma read is 512 bytes, so this +* limits our max_sge_rd as the wqe needs to fit: +* - ctrl segment (16 bytes) +* - rdma segment (16 bytes) +* - scatter elements (16 bytes each) +*/ +MLX5_MAX_SGE_RD = (512 -16 -16 ) /16 +}; +struct mlx5_inbox_hdr {__be16 opcode;u8 rsvd[4 ];
Patches currently in stable-queue which might be from [email protected] are
queue-4.5/ib-mlx5-expose-correct-max_sge_rd-limit.patch