RE: [PATCH V4 08/18] RDMA/siw: Factor out siw_rx_data helper

[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 3:27 PM
> To: Bernard Metzler <BMT@xxxxxxxxxxxxxx>; jgg@xxxxxxxx; leon@xxxxxxxxxx
> Cc: linux-rdma@xxxxxxxxxxxxxxx
> Subject: [EXTERNAL] [PATCH V4 08/18] RDMA/siw: Factor out siw_rx_data
> helper
> 
> Remove the redundant code given they share the same logic.
> 
> Signed-off-by: Guoqing Jiang <guoqing.jiang@xxxxxxxxx>
> ---
> Change since last version:
> 1. rename the helper to siw_rx_data per Bernard's suggestion
> 
>  drivers/infiniband/sw/siw/siw_qp_rx.c | 53 ++++++++++-----------------
>  1 file changed, 20 insertions(+), 33 deletions(-)
> 
> diff --git a/drivers/infiniband/sw/siw/siw_qp_rx.c
> b/drivers/infiniband/sw/siw/siw_qp_rx.c
> index 10805a7d0487..ed4fc39718b4 100644
> --- a/drivers/infiniband/sw/siw/siw_qp_rx.c
> +++ b/drivers/infiniband/sw/siw/siw_qp_rx.c
> @@ -405,6 +405,20 @@ static struct siw_wqe *siw_rqe_get(struct siw_qp *qp)
>  	return wqe;
>  }
> 
> +static int siw_rx_data(struct siw_mem *mem_p, struct siw_rx_stream *srx,
> +		       unsigned int *pbl_idx, u64 addr, int bytes)
> +{
> +	int rv;
> +
> +	if (mem_p->mem_obj == NULL)
> +		rv = siw_rx_kva(srx, ib_virt_dma_to_ptr(addr), bytes);
> +	else if (!mem_p->is_pbl)
> +		rv = siw_rx_umem(srx, mem_p->umem, addr, bytes);
> +	else
> +		rv = siw_rx_pbl(srx, pbl_idx, mem_p, addr, bytes);
> +	return rv;
> +}
> +
>  /*
>   * siw_proc_send:
>   *
> @@ -485,17 +499,8 @@ int siw_proc_send(struct siw_qp *qp)
>  			break;
>  		}
>  		mem_p = *mem;
> -		if (mem_p->mem_obj == NULL)
> -			rv = siw_rx_kva(srx,
> -				ib_virt_dma_to_ptr(sge->laddr + frx->sge_off),
> -				sge_bytes);
> -		else if (!mem_p->is_pbl)
> -			rv = siw_rx_umem(srx, mem_p->umem,
> -					 sge->laddr + frx->sge_off, sge_bytes);
> -		else
> -			rv = siw_rx_pbl(srx, &frx->pbl_idx, mem_p,
> -					sge->laddr + frx->sge_off, sge_bytes);
> -
> +		rv = siw_rx_data(mem_p, srx, &frx->pbl_idx,
> +				 sge->laddr + frx->sge_off, sge_bytes);
>  		if (unlikely(rv != sge_bytes)) {
>  			wqe->processed += rcvd_bytes;
> 
> @@ -598,17 +603,8 @@ int siw_proc_write(struct siw_qp *qp)
>  		return -EINVAL;
>  	}
> 
> -	if (mem->mem_obj == NULL)
> -		rv = siw_rx_kva(srx,
> -			(void *)(uintptr_t)(srx->ddp_to + srx->fpdu_part_rcvd),
> -			bytes);
> -	else if (!mem->is_pbl)
> -		rv = siw_rx_umem(srx, mem->umem,
> -				 srx->ddp_to + srx->fpdu_part_rcvd, bytes);
> -	else
> -		rv = siw_rx_pbl(srx, &frx->pbl_idx, mem,
> -				srx->ddp_to + srx->fpdu_part_rcvd, bytes);
> -
> +	rv = siw_rx_data(mem, srx, &frx->pbl_idx,
> +			 srx->ddp_to + srx->fpdu_part_rcvd, bytes);
>  	if (unlikely(rv != bytes)) {
>  		siw_init_terminate(qp, TERM_ERROR_LAYER_DDP,
>  				   DDP_ETYPE_CATASTROPHIC,
> @@ -849,17 +845,8 @@ int siw_proc_rresp(struct siw_qp *qp)
>  	mem_p = *mem;
> 
>  	bytes = min(srx->fpdu_part_rem, srx->skb_new);
> -
> -	if (mem_p->mem_obj == NULL)
> -		rv = siw_rx_kva(srx,
> -			ib_virt_dma_to_ptr(sge->laddr + wqe->processed),
> -			bytes);
> -	else if (!mem_p->is_pbl)
> -		rv = siw_rx_umem(srx, mem_p->umem, sge->laddr + wqe->processed,
> -				 bytes);
> -	else
> -		rv = siw_rx_pbl(srx, &frx->pbl_idx, mem_p,
> -				sge->laddr + wqe->processed, bytes);
> +	rv = siw_rx_data(mem_p, srx, &frx->pbl_idx,
> +			 sge->laddr + wqe->processed, bytes);
>  	if (rv != bytes) {
>  		wqe->wc_status = SIW_WC_GENERAL_ERR;
>  		rv = -EINVAL;
> --
> 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