RDMA/cma: Remove unnecessary INIT->INIT transition
authorHåkon Bugge <haakon.bugge@oracle.com>
Tue, 22 Jun 2021 13:39:56 +0000 (15:39 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 24 Jun 2021 18:29:53 +0000 (15:29 -0300)
In rdma_create_qp(), a connected QP will be transitioned to the INIT
state.

Afterwards, the QP will be transitioned to the RTR state by the
cma_modify_qp_rtr() function. But this function starts by performing an
ib_modify_qp() to the INIT state again, before another ib_modify_qp() is
performed to transition the QP to the RTR state.

Hence, there is no need to transition the QP to the INIT state in
rdma_create_qp().

Link: https://lore.kernel.org/r/1624369197-24578-2-git-send-email-haakon.bugge@oracle.com
Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/core/cma.c

index ab148a6..e3f52c5 100644 (file)
@@ -926,25 +926,12 @@ static int cma_init_ud_qp(struct rdma_id_private *id_priv, struct ib_qp *qp)
        return ret;
 }
 
-static int cma_init_conn_qp(struct rdma_id_private *id_priv, struct ib_qp *qp)
-{
-       struct ib_qp_attr qp_attr;
-       int qp_attr_mask, ret;
-
-       qp_attr.qp_state = IB_QPS_INIT;
-       ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask);
-       if (ret)
-               return ret;
-
-       return ib_modify_qp(qp, &qp_attr, qp_attr_mask);
-}
-
 int rdma_create_qp(struct rdma_cm_id *id, struct ib_pd *pd,
                   struct ib_qp_init_attr *qp_init_attr)
 {
        struct rdma_id_private *id_priv;
        struct ib_qp *qp;
-       int ret;
+       int ret = 0;
 
        id_priv = container_of(id, struct rdma_id_private, id);
        if (id->device != pd->device) {
@@ -961,8 +948,6 @@ int rdma_create_qp(struct rdma_cm_id *id, struct ib_pd *pd,
 
        if (id->qp_type == IB_QPT_UD)
                ret = cma_init_ud_qp(id_priv, qp);
-       else
-               ret = cma_init_conn_qp(id_priv, qp);
        if (ret)
                goto out_destroy;