From: Leon Romanovsky <leonro@xxxxxxxxxxxx> Hi, This is first part of series which tries to return some sanity to mlx5_ib_create_qp() function. Such refactoring is required to make extension of that function with less worries of breaking driver. Extra goal of such refactoring is to ensure that QP is allocated at the beginning of function and released at the end. It will allow us to move QP allocation to be under IB/core responsibility. It is based on previously sent [1] "[PATCH mlx5-next 00/24] Mass conversion to light mlx5 command interface" Thanks [1] https://lore.kernel.org/linux-rdma/20200420114136.264924-1-leon@xxxxxxxxxx Leon Romanovsky (18): RDMA/mlx5: Organize QP types checks in one place RDMA/mlx5: Delete impossible GSI port check RDMA/mlx5: Perform check if QP creation flow is valid RDMA/mlx5: Prepare QP allocation for future removal RDMA/mlx5: Avoid setting redundant NULL for XRC QPs RDMA/mlx5: Set QP subtype immediately when it is known RDMA/mlx5: Separate create QP flows to be based on type RDMA/mlx5: Split scatter CQE configuration for DCT QP RDMA/mlx5: Update all DRIVER QP places to use QP subtype RDMA/mlx5: Move DRIVER QP flags check into separate function RDMA/mlx5: Remove second copy from user for non RSS RAW QPs RDMA/mlx5: Initial separation of RAW_PACKET QP from common flow RDMA/mlx5: Delete create QP flags obfuscation RDMA/mlx5: Process create QP flags in one place RDMA/mlx5: Use flags_en mechanism to mark QP created with WQE signature RDMA/mlx5: Change scatter CQE flag to be set like other vendor flags RDMA/mlx5: Return all configured create flags through query QP RDMA/mlx5: Process all vendor flags in one place drivers/infiniband/hw/mlx5/devx.c | 2 +- drivers/infiniband/hw/mlx5/flow.c | 2 +- drivers/infiniband/hw/mlx5/gsi.c | 10 - drivers/infiniband/hw/mlx5/main.c | 9 +- drivers/infiniband/hw/mlx5/mlx5_ib.h | 24 +- drivers/infiniband/hw/mlx5/odp.c | 2 +- drivers/infiniband/hw/mlx5/qp.c | 928 +++++++++++++-------------- 7 files changed, 467 insertions(+), 510 deletions(-) -- 2.25.2