RDMA/mlx5: Allow providing extra scatter CQE QP flag
Subsystems (2)
PATCH 1/1 RDMA/mlx5: Allow providing extra scatter CQE QP flag
From: Leon Romanovsky <[email protected]>
Scatter CQE feature relies on two flags MLX5_QP_FLAG_SCATTER_CQE and MLX5_QP_FLAG_ALLOW_SCATTER_CQE, both of them can be provided without relation to device capability.
Relax global validity check to allow MLX5_QP_FLAG_ALLOW_SCATTER_CQE QP flag.
Fixes 90ecb37a751b ("RDMA/mlx5: Change scatter CQE flag to be set like other vendor flags")
Fixes 37518fa49f76 ("RDMA/mlx5: Process all vendor flags in one place")
Reviewed-by Artemy Kovalyov <[email protected]>
Signed-off-by Leon Romanovsky <[email protected]>
--- drivers/infiniband/hw/mlx5/qp.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-)
drivers/infiniband/hw/mlx5/qp.c +15 -9
@@ -1766,15 +1766,14 @@ static int create_rss_raw_qp_tir(struct mlx5_ib_dev *dev, struct ib_pd *pd, }static void configure_requester_scat_cqe (struct mlx5_ib_dev *dev, +struct mlx5_ib_qp *qp,struct ib_qp_init_attr *init_attr, -struct mlx5_ib_create_qp *ucmd,void *qpc) {int scqe_sz;bool allow_scat_cqe = false; -if (ucmd) - allow_scat_cqe = ucmd->flags &MLX5_QP_FLAG_ALLOW_SCATTER_CQE ; + allow_scat_cqe = qp->flags_en &MLX5_QP_FLAG_ALLOW_SCATTER_CQE ;if (!allow_scat_cqe && init_attr->sq_sig_type !=IB_SIGNAL_ALL_WR )return ;
@@ -2012,7 +2011,7 @@ static int create_user_qp(struct mlx5_ib_dev *dev, struct ib_pd *pd, }if ((qp->flags_en &MLX5_QP_FLAG_SCATTER_CQE ) && (qp->type ==MLX5_IB_QPT_DCI || qp->type ==IB_QPT_RC )) -configure_requester_scat_cqe (dev, init_attr, ucmd, qpc); +configure_requester_scat_cqe (dev, qp, init_attr, qpc);if (qp->rq.wqe_cnt) {MLX5_SET (qpc, qpc, log_rq_stride, qp->rq.wqe_shift -4 );
@@ -2543,13 +2542,18 @@ static void process_vendor_flag(struct mlx5_ib_dev *dev, int *flags, int flag,return ; } -if (flag ==MLX5_QP_FLAG_SCATTER_CQE ) { +switch (flag) { +case MLX5_QP_FLAG_SCATTER_CQE : +case MLX5_QP_FLAG_ALLOW_SCATTER_CQE :/* -* We don't return error if this flag was provided, -* and mlx5 doesn't have right capability. -*/ - *flags &= ~MLX5_QP_FLAG_SCATTER_CQE ; +* We don't return error if these flags were provided, +* and mlx5 doesn't have right capability. +*/ + *flags &= ~(MLX5_QP_FLAG_SCATTER_CQE | +MLX5_QP_FLAG_ALLOW_SCATTER_CQE );return ; +default : +break ; }mlx5_ib_dbg (dev,"Vendor create QP flag 0x%X is not supported\n" , flag); }
@@ -2589,6 +2593,8 @@ static int process_vendor_flags(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,process_vendor_flag (dev, &flags,MLX5_QP_FLAG_SIGNATURE , true, qp);process_vendor_flag (dev, &flags,MLX5_QP_FLAG_SCATTER_CQE ,MLX5_CAP_GEN (mdev, sctr_data_cqe), qp); +process_vendor_flag (dev, &flags,MLX5_QP_FLAG_ALLOW_SCATTER_CQE , +MLX5_CAP_GEN (mdev, sctr_data_cqe), qp);if (qp->type ==IB_QPT_RAW_PACKET ) { cond = MLX5_CAP_ETH(mdev, tunnel_stateless_vxlan) ||
Signature · 1 line
2.26.2
Quoted 9 lines · Leon Romanovsky
From: Leon Romanovsky <[email protected]>
Scatter CQE feature relies on two flags
MLX5_QP_FLAG_SCATTER_CQEandMLX5_QP_FLAG_ALLOW_SCATTER_CQE, both of them can be provided without relation to device capability.Relax global validity check to allow
MLX5_QP_FLAG_ALLOW_SCATTER_CQEQP flag.
Quoted 7 lines
Fixes 90ecb37a751b ("RDMA/mlx5: Change scatter CQE flag to be set like other vendor flags")Fixes 37518fa49f76 ("RDMA/mlx5: Process all vendor flags in one place")Reviewed-by Artemy Kovalyov <[email protected]>Signed-off-by Leon Romanovsky <[email protected]>--- drivers/infiniband/hw/mlx5/qp.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-)
Applied to for-next, thanks
Jason