> -----Original Message----- > From: Guoqing Jiang <guoqing.jiang@xxxxxxxxx> > Sent: Friday, October 27, 2023 3:26 PM > To: Bernard Metzler <BMT@xxxxxxxxxxxxxx>; jgg@xxxxxxxx; leon@xxxxxxxxxx > Cc: linux-rdma@xxxxxxxxxxxxxxx > Subject: [EXTERNAL] [PATCH V4 01/18] RDMA/siw: Introduce siw_get_page > > Add the wrapper function to get either pbl page or umem page. > > Signed-off-by: Guoqing Jiang <guoqing.jiang@xxxxxxxxx> > --- > drivers/infiniband/sw/siw/siw_qp_tx.c | 31 +++++++++++---------------- > 1 file changed, 12 insertions(+), 19 deletions(-) > > diff --git a/drivers/infiniband/sw/siw/siw_qp_tx.c > b/drivers/infiniband/sw/siw/siw_qp_tx.c > index b2c06100cf01..6a24e08356e9 100644 > --- a/drivers/infiniband/sw/siw/siw_qp_tx.c > +++ b/drivers/infiniband/sw/siw/siw_qp_tx.c > @@ -34,6 +34,15 @@ static struct page *siw_get_pblpage(struct siw_mem *mem, > u64 addr, int *idx) > return NULL; > } > > +static struct page *siw_get_page(struct siw_mem *mem, struct siw_sge *sge, > + unsigned long offset, int *pbl_idx) > +{ > + if (!mem->is_pbl) > + return siw_get_upage(mem->umem, sge->laddr + offset); > + else > + return siw_get_pblpage(mem, sge->laddr + offset, pbl_idx); > +} > + > /* > * Copy short payload at provided destination payload address > */ > @@ -67,11 +76,7 @@ static int siw_try_1seg(struct siw_iwarp_tx *c_tx, void > *paddr) > char *buffer; > int pbl_idx = 0; > > - if (!mem->is_pbl) > - p = siw_get_upage(mem->umem, sge->laddr); > - else > - p = siw_get_pblpage(mem, sge->laddr, &pbl_idx); > - > + p = siw_get_page(mem, sge, 0, &pbl_idx); > if (unlikely(!p)) > return -EFAULT; > > @@ -85,13 +90,7 @@ static int siw_try_1seg(struct siw_iwarp_tx *c_tx, void > *paddr) > memcpy(paddr, buffer + off, part); > kunmap_local(buffer); > > - if (!mem->is_pbl) > - p = siw_get_upage(mem->umem, > - sge->laddr + part); > - else > - p = siw_get_pblpage(mem, > - sge->laddr + part, > - &pbl_idx); > + p = siw_get_page(mem, sge, part, &pbl_idx); > if (unlikely(!p)) > return -EFAULT; > > @@ -502,13 +501,7 @@ static int siw_tx_hdt(struct siw_iwarp_tx *c_tx, > struct socket *s) > if (!is_kva) { > struct page *p; > > - if (mem->is_pbl) > - p = siw_get_pblpage( > - mem, sge->laddr + sge_off, > - &pbl_idx); > - else > - p = siw_get_upage(mem->umem, > - sge->laddr + sge_off); > + p = siw_get_page(mem, sge, sge_off, &pbl_idx); > if (unlikely(!p)) { > siw_unmap_pages(iov, kmap_mask, seg); > wqe->processed -= c_tx->bytes_unsent; > -- > 2.35.3 Looks good. Acked-by: Bernard Metzler <bmt@xxxxxxxxxxxxxx>