On Mon, Jun 21, 2021 at 10:06:15AM +0300, Leon Romanovsky wrote: > From: Lior Nahmanson <liorna@xxxxxxxxxx> > > This patch isolates DCI QP creation logic to separate function, so this > change will reduce complexity when adding new features to DCI QP without > interfering with other QP types. > > The code was copied from create_user_qp() while taking only DCI relevant bits. > > Reviewed-by: Meir Lichtinger <meirl@xxxxxxxxxx> > Signed-off-by: Lior Nahmanson <liorna@xxxxxxxxxx> > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx> > drivers/infiniband/hw/mlx5/qp.c | 157 ++++++++++++++++++++++++++++++++ > 1 file changed, 157 insertions(+) > > diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c > index 7a5f1eba60e3..65a380543f5a 100644 > +++ b/drivers/infiniband/hw/mlx5/qp.c > @@ -1974,6 +1974,160 @@ static int create_xrc_tgt_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp, > return 0; > } > > +static int create_dci(struct mlx5_ib_dev *dev, struct ib_pd *pd, > + struct mlx5_ib_qp *qp, > + struct mlx5_create_qp_params *params) > +{ This is a huge amount of copying just to add 4 lines, why? There must be a better way to do this qp stuff. Why not put more stuff in _create_user_qp()? Jason