RE: [PATCH V3 13/18] RDMA/siw: Cleanup siw_accept

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Guoqing Jiang <guoqing.jiang@xxxxxxxxx>
> Sent: Friday, October 27, 2023 4:33 AM
> To: Bernard Metzler <BMT@xxxxxxxxxxxxxx>; jgg@xxxxxxxx; leon@xxxxxxxxxx
> Cc: linux-rdma@xxxxxxxxxxxxxxx
> Subject: [EXTERNAL] [PATCH V3 13/18] RDMA/siw: Cleanup siw_accept
> 
> With the initialization of rv and the two added label, we can
> simplifiy code a bit.
> 
> Signed-off-by: Guoqing Jiang <guoqing.jiang@xxxxxxxxx>
> ---
>  drivers/infiniband/sw/siw/siw_cm.c | 41 ++++++++++--------------------
>  1 file changed, 14 insertions(+), 27 deletions(-)
> 
> diff --git a/drivers/infiniband/sw/siw/siw_cm.c
> b/drivers/infiniband/sw/siw/siw_cm.c
> index 1d2438fbf7c7..cff0fd7ceee6 100644
> --- a/drivers/infiniband/sw/siw/siw_cm.c
> +++ b/drivers/infiniband/sw/siw/siw_cm.c
> @@ -1548,7 +1548,7 @@ int siw_accept(struct iw_cm_id *id, struct
> iw_cm_conn_param *params)
>  	struct siw_cep *cep = (struct siw_cep *)id->provider_data;
>  	struct siw_qp *qp;
>  	struct siw_qp_attrs qp_attrs;
> -	int rv, max_priv_data = MPA_MAX_PRIVDATA;
> +	int rv = -EINVAL, max_priv_data = MPA_MAX_PRIVDATA;
>  	bool wait_for_peer_rts = false;
> 
>  	siw_cep_set_inuse(cep);
> @@ -1564,24 +1564,17 @@ int siw_accept(struct iw_cm_id *id, struct
> iw_cm_conn_param *params)
> 
>  	if (cep->state != SIW_EPSTATE_RECVD_MPAREQ) {
>  		siw_dbg_cep(cep, "out of state\n");
> -
> -		siw_cep_set_free_and_put(cep);
> -
> -		return -ECONNRESET;
> +		rv = -ECONNRESET;
> +		goto free_cep;
>  	}
>  	qp = siw_qp_id2obj(sdev, params->qpn);
>  	if (!qp) {
>  		WARN(1, "[QP %d] does not exist\n", params->qpn);
> -		siw_cep_set_free_and_put(cep);
> -
> -		return -EINVAL;
> +		goto free_cep;
>  	}
>  	down_write(&qp->state_lock);
> -	if (qp->attrs.state > SIW_QP_STATE_RTR) {
> -		rv = -EINVAL;
> -		up_write(&qp->state_lock);
> -		goto error;
> -	}
> +	if (qp->attrs.state > SIW_QP_STATE_RTR)
> +		goto error_unlock;
>  	siw_dbg_cep(cep, "[QP %d]\n", params->qpn);
> 
>  	if (try_gso && cep->mpa.hdr.params.bits & MPA_RR_FLAG_GSO_EXP) {
> @@ -1595,9 +1588,7 @@ int siw_accept(struct iw_cm_id *id, struct
> iw_cm_conn_param *params)
>  			"[QP %u]: ord %d (max %d), ird %d (max %d)\n",
>  			qp_id(qp), params->ord, sdev->attrs.max_ord,
>  			params->ird, sdev->attrs.max_ird);
> -		rv = -EINVAL;
> -		up_write(&qp->state_lock);
> -		goto error;
> +		goto error_unlock;
>  	}
>  	if (cep->enhanced_rdma_conn_est)
>  		max_priv_data -= sizeof(struct mpa_v2_data);
> @@ -1607,9 +1598,7 @@ int siw_accept(struct iw_cm_id *id, struct
> iw_cm_conn_param *params)
>  			cep,
>  			"[QP %u]: private data length: %d (max %d)\n",
>  			qp_id(qp), params->private_data_len, max_priv_data);
> -		rv = -EINVAL;
> -		up_write(&qp->state_lock);
> -		goto error;
> +		goto error_unlock;
>  	}
>  	if (cep->enhanced_rdma_conn_est) {
>  		if (params->ord > cep->ord) {
> @@ -1618,9 +1607,7 @@ int siw_accept(struct iw_cm_id *id, struct
> iw_cm_conn_param *params)
>  			} else {
>  				cep->ird = params->ird;
>  				cep->ord = params->ord;
> -				rv = -EINVAL;
> -				up_write(&qp->state_lock);
> -				goto error;
> +				goto error_unlock;
>  			}
>  		}
>  		if (params->ird < cep->ird) {
> @@ -1629,8 +1616,7 @@ int siw_accept(struct iw_cm_id *id, struct
> iw_cm_conn_param *params)
>  				params->ird = cep->ird;
>  			else {
>  				rv = -ENOMEM;
> -				up_write(&qp->state_lock);
> -				goto error;
> +				goto error_unlock;
>  			}
>  		}
>  		if (cep->mpa.v2_ctrl.ord &
> @@ -1677,7 +1663,6 @@ int siw_accept(struct iw_cm_id *id, struct
> iw_cm_conn_param *params)
>  				   SIW_QP_ATTR_ORD | SIW_QP_ATTR_IRD |
>  				   SIW_QP_ATTR_MPA);
>  	up_write(&qp->state_lock);
> -
>  	if (rv)
>  		goto error;
> 
> @@ -1700,6 +1685,9 @@ int siw_accept(struct iw_cm_id *id, struct
> iw_cm_conn_param *params)
>  	siw_cep_set_free(cep);
> 
>  	return 0;
> +
> +error_unlock:
> +	up_write(&qp->state_lock);
>  error:
>  	siw_socket_disassoc(cep->sock);
>  	sock_release(cep->sock);
> @@ -1714,9 +1702,8 @@ int siw_accept(struct iw_cm_id *id, struct
> iw_cm_conn_param *params)
>  	}
>  	cep->qp = NULL;
>  	siw_qp_put(qp);
> -
> +free_cep:
>  	siw_cep_set_free_and_put(cep);
> -
>  	return rv;
>  }
> 
> --
> 2.35.3

Looks good.

Acked-by: Bernard Metzler <bmt@xxxxxxxxxxxxxx>




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux