RE: [PATCH V3 16/18] RDMA/siw: Only check attrs->cap.max_send_wr in siw_create_qp

[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 16/18] RDMA/siw: Only check attrs-
> >cap.max_send_wr in siw_create_qp
> 
> We can just check max_send_wr here given both max_send_wr and
> max_recv_wr are defined as u32 type, and we also need to ensure
> num_sqe (derived from max_send_wr) shouldn't be zero.
> 
> Signed-off-by: Guoqing Jiang <guoqing.jiang@xxxxxxxxx>
> ---
>  drivers/infiniband/sw/siw/siw_verbs.c | 18 +++++-------------
>  1 file changed, 5 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/infiniband/sw/siw/siw_verbs.c
> b/drivers/infiniband/sw/siw/siw_verbs.c
> index dcd69fc01176..ef149ed98946 100644
> --- a/drivers/infiniband/sw/siw/siw_verbs.c
> +++ b/drivers/infiniband/sw/siw/siw_verbs.c
> @@ -333,11 +333,10 @@ int siw_create_qp(struct ib_qp *ibqp, struct
> ib_qp_init_attr *attrs,
>  		goto err_atomic;
>  	}
>  	/*
> -	 * NOTE: we allow for zero element SQ and RQ WQE's SGL's
> -	 * but not for a QP unable to hold any WQE (SQ + RQ)
> +	 * NOTE: we don't allow for a QP unable to hold any SQ WQE
>  	 */
> -	if (attrs->cap.max_send_wr + attrs->cap.max_recv_wr == 0) {
> -		siw_dbg(base_dev, "QP must have send or receive queue\n");
> +	if (attrs->cap.max_send_wr == 0) {
> +		siw_dbg(base_dev, "QP must have send queue\n");
>  		rv = -EINVAL;
>  		goto err_atomic;
>  	}
> @@ -357,21 +356,14 @@ int siw_create_qp(struct ib_qp *ibqp, struct
> ib_qp_init_attr *attrs,
>  	if (rv)
>  		goto err_atomic;
> 
> -	num_sqe = attrs->cap.max_send_wr;
> -	num_rqe = attrs->cap.max_recv_wr;
> 
>  	/* All queue indices are derived from modulo operations
>  	 * on a free running 'get' (consumer) and 'put' (producer)
>  	 * unsigned counter. Having queue sizes at power of two
>  	 * avoids handling counter wrap around.
>  	 */
> -	if (num_sqe)
> -		num_sqe = roundup_pow_of_two(num_sqe);
> -	else {
> -		/* Zero sized SQ is not supported */
> -		rv = -EINVAL;
> -		goto err_out_xa;
> -	}
> +	num_sqe = roundup_pow_of_two(attrs->cap.max_send_wr);
> +	num_rqe = attrs->cap.max_recv_wr;
>  	if (num_rqe)
>  		num_rqe = roundup_pow_of_two(num_rqe);
> 
> --
> 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