* RE: [PATCH V4 02/18] RDMA/siw: Introduce siw_update_skb_rcvd [not found] ` <20231027132644.29347-3-guoqing.jiang@linux.dev> @ 2023-10-30 13:34 ` Bernard Metzler 0 siblings, 0 replies; 7+ messages in thread From: Bernard Metzler @ 2023-10-30 13:34 UTC (permalink / raw) To: Guoqing Jiang, jgg@ziepe.ca, leon@kernel.org; +Cc: linux-rdma@vger.kernel.org > -----Original Message----- > From: Guoqing Jiang <guoqing.jiang@linux.dev> > Sent: Friday, October 27, 2023 3:26 PM > To: Bernard Metzler <BMT@zurich.ibm.com>; jgg@ziepe.ca; leon@kernel.org > Cc: linux-rdma@vger.kernel.org > Subject: [EXTERNAL] [PATCH V4 02/18] RDMA/siw: Introduce > siw_update_skb_rcvd > > There are some places share the same logic, factor a common > helper for it. > > Signed-off-by: Guoqing Jiang <guoqing.jiang@linux.dev> > --- > drivers/infiniband/sw/siw/siw_qp_rx.c | 31 +++++++++++---------------- > 1 file changed, 12 insertions(+), 19 deletions(-) > > diff --git a/drivers/infiniband/sw/siw/siw_qp_rx.c > b/drivers/infiniband/sw/siw/siw_qp_rx.c > index 33e0fdb362ff..10805a7d0487 100644 > --- a/drivers/infiniband/sw/siw/siw_qp_rx.c > +++ b/drivers/infiniband/sw/siw/siw_qp_rx.c > @@ -881,6 +881,13 @@ int siw_proc_rresp(struct siw_qp *qp) > return rv; > } > > +static void siw_update_skb_rcvd(struct siw_rx_stream *srx, u16 length) > +{ > + srx->skb_offset += length; > + srx->skb_new -= length; > + srx->skb_copied += length; > +} > + > int siw_proc_terminate(struct siw_qp *qp) > { > struct siw_rx_stream *srx = &qp->rx_stream; > @@ -925,9 +932,7 @@ int siw_proc_terminate(struct siw_qp *qp) > goto out; > > infop += to_copy; > - srx->skb_offset += to_copy; > - srx->skb_new -= to_copy; > - srx->skb_copied += to_copy; > + siw_update_skb_rcvd(srx, to_copy); > srx->fpdu_part_rcvd += to_copy; > srx->fpdu_part_rem -= to_copy; > > @@ -949,9 +954,7 @@ int siw_proc_terminate(struct siw_qp *qp) > term->flag_m ? "valid" : "invalid"); > } > out: > - srx->skb_new -= to_copy; > - srx->skb_offset += to_copy; > - srx->skb_copied += to_copy; > + siw_update_skb_rcvd(srx, to_copy); > srx->fpdu_part_rcvd += to_copy; > srx->fpdu_part_rem -= to_copy; > > @@ -970,9 +973,7 @@ static int siw_get_trailer(struct siw_qp *qp, struct > siw_rx_stream *srx) > > skb_copy_bits(skb, srx->skb_offset, tbuf, avail); > > - srx->skb_new -= avail; > - srx->skb_offset += avail; > - srx->skb_copied += avail; > + siw_update_skb_rcvd(srx, avail); > srx->fpdu_part_rem -= avail; > > if (srx->fpdu_part_rem) > @@ -1023,12 +1024,8 @@ static int siw_get_hdr(struct siw_rx_stream *srx) > skb_copy_bits(skb, srx->skb_offset, > (char *)c_hdr + srx->fpdu_part_rcvd, bytes); > > + siw_update_skb_rcvd(srx, bytes); > srx->fpdu_part_rcvd += bytes; > - > - srx->skb_new -= bytes; > - srx->skb_offset += bytes; > - srx->skb_copied += bytes; > - > if (srx->fpdu_part_rcvd < MIN_DDP_HDR) > return -EAGAIN; > > @@ -1091,12 +1088,8 @@ static int siw_get_hdr(struct siw_rx_stream *srx) > skb_copy_bits(skb, srx->skb_offset, > (char *)c_hdr + srx->fpdu_part_rcvd, bytes); > > + siw_update_skb_rcvd(srx, bytes); > srx->fpdu_part_rcvd += bytes; > - > - srx->skb_new -= bytes; > - srx->skb_offset += bytes; > - srx->skb_copied += bytes; > - > if (srx->fpdu_part_rcvd < hdrlen) > return -EAGAIN; > } > -- > 2.35.3 Looks good. Acked-by: Bernard Metzler <bmt@zurich.ibm.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20231027132644.29347-13-guoqing.jiang@linux.dev>]
* RE: [PATCH V4 12/18] RDMA/siw: Introduce siw_free_cm_id [not found] ` <20231027132644.29347-13-guoqing.jiang@linux.dev> @ 2023-10-30 13:35 ` Bernard Metzler 0 siblings, 0 replies; 7+ messages in thread From: Bernard Metzler @ 2023-10-30 13:35 UTC (permalink / raw) To: Guoqing Jiang, jgg@ziepe.ca, leon@kernel.org; +Cc: linux-rdma@vger.kernel.org > -----Original Message----- > From: Guoqing Jiang <guoqing.jiang@linux.dev> > Sent: Friday, October 27, 2023 3:27 PM > To: Bernard Metzler <BMT@zurich.ibm.com>; jgg@ziepe.ca; leon@kernel.org > Cc: linux-rdma@vger.kernel.org > Subject: [EXTERNAL] [PATCH V4 12/18] RDMA/siw: Introduce siw_free_cm_id > > Factor out a helper to simplify code. > > Reported-by: kernel test robot <lkp@intel.com> > Closes: INVALID URI REMOVED > 3A__lore.kernel.org_oe-2Dkbuild-2Dall_202310091656.JlrmcNXB-2Dlkp- > 40intel.com_&d=DwIDAg&c=jf_iaSHvJObTbx-siA1ZOg&r=2TaYXQ0T- > r8ZO1PP1alNwU_QJcRRLfmYTAgd3QCvqSc&m=aD4gL7u0nROWIiFk0ch8zNX6vYWKMUOorYEWPY > b9amSqnQTH0qNMcLijHRNn7r_s&s=kmGGMztuOUMejyxISpfW94VtbHKDivS9DMunEaOx5uc&e= > Signed-off-by: Guoqing Jiang <guoqing.jiang@linux.dev> > --- > Changes since last version: > 1. add missed check of cep->cm_id > > drivers/infiniband/sw/siw/siw_cm.c | 30 ++++++++++++++---------------- > 1 file changed, 14 insertions(+), 16 deletions(-) > > diff --git a/drivers/infiniband/sw/siw/siw_cm.c > b/drivers/infiniband/sw/siw/siw_cm.c > index 2f338bb3a24c..9c79d3ea5b66 100644 > --- a/drivers/infiniband/sw/siw/siw_cm.c > +++ b/drivers/infiniband/sw/siw/siw_cm.c > @@ -364,6 +364,15 @@ static int siw_cm_upcall(struct siw_cep *cep, enum > iw_cm_event_type reason, > return id->event_handler(id, &event); > } > > +static void siw_free_cm_id(struct siw_cep *cep) > +{ > + if (!cep->cm_id) > + return; > + > + cep->cm_id->rem_ref(cep->cm_id); > + cep->cm_id = NULL; > +} > + > /* > * siw_qp_cm_drop() > * > @@ -415,8 +424,7 @@ void siw_qp_cm_drop(struct siw_qp *qp, int schedule) > default: > break; > } > - cep->cm_id->rem_ref(cep->cm_id); > - cep->cm_id = NULL; > + siw_free_cm_id(cep); > siw_cep_put(cep); > } > cep->state = SIW_EPSTATE_CLOSED; > @@ -1176,8 +1184,7 @@ static void siw_cm_work_handler(struct work_struct > *w) > cep->sock = NULL; > } > if (cep->cm_id) { > - cep->cm_id->rem_ref(cep->cm_id); > - cep->cm_id = NULL; > + siw_free_cm_id(cep); > siw_cep_put(cep); > } > } > @@ -1702,10 +1709,7 @@ int siw_accept(struct iw_cm_id *id, struct > iw_cm_conn_param *params) > > cep->state = SIW_EPSTATE_CLOSED; > > - if (cep->cm_id) { > - cep->cm_id->rem_ref(id); > - cep->cm_id = NULL; > - } > + siw_free_cm_id(cep); > if (qp->cep) { > siw_cep_put(cep); > qp->cep = NULL; > @@ -1880,10 +1884,7 @@ int siw_create_listen(struct iw_cm_id *id, int > backlog) > if (cep) { > siw_cep_set_inuse(cep); > > - if (cep->cm_id) { > - cep->cm_id->rem_ref(cep->cm_id); > - cep->cm_id = NULL; > - } > + siw_free_cm_id(cep); > cep->sock = NULL; > siw_socket_disassoc(s); > cep->state = SIW_EPSTATE_CLOSED; > @@ -1912,10 +1913,7 @@ static void siw_drop_listeners(struct iw_cm_id *id) > > siw_cep_set_inuse(cep); > > - if (cep->cm_id) { > - cep->cm_id->rem_ref(cep->cm_id); > - cep->cm_id = NULL; > - } > + siw_free_cm_id(cep); > if (cep->sock) { > siw_socket_disassoc(cep->sock); > sock_release(cep->sock); > -- > 2.35.3 Looks good. Acked-by: Bernard Metzler <bmt@zurich.ibm.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20231027132644.29347-9-guoqing.jiang@linux.dev>]
* RE: [PATCH V4 08/18] RDMA/siw: Factor out siw_rx_data helper [not found] ` <20231027132644.29347-9-guoqing.jiang@linux.dev> @ 2023-10-30 13:37 ` Bernard Metzler 0 siblings, 0 replies; 7+ messages in thread From: Bernard Metzler @ 2023-10-30 13:37 UTC (permalink / raw) To: Guoqing Jiang, jgg@ziepe.ca, leon@kernel.org; +Cc: linux-rdma@vger.kernel.org > -----Original Message----- > From: Guoqing Jiang <guoqing.jiang@linux.dev> > Sent: Friday, October 27, 2023 3:27 PM > To: Bernard Metzler <BMT@zurich.ibm.com>; jgg@ziepe.ca; leon@kernel.org > Cc: linux-rdma@vger.kernel.org > 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@linux.dev> > --- > 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@zurich.ibm.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20231027132644.29347-2-guoqing.jiang@linux.dev>]
* RE: [PATCH V4 01/18] RDMA/siw: Introduce siw_get_page [not found] ` <20231027132644.29347-2-guoqing.jiang@linux.dev> @ 2023-10-30 13:43 ` Bernard Metzler 0 siblings, 0 replies; 7+ messages in thread From: Bernard Metzler @ 2023-10-30 13:43 UTC (permalink / raw) To: Guoqing Jiang, jgg@ziepe.ca, leon@kernel.org; +Cc: linux-rdma@vger.kernel.org > -----Original Message----- > From: Guoqing Jiang <guoqing.jiang@linux.dev> > Sent: Friday, October 27, 2023 3:26 PM > To: Bernard Metzler <BMT@zurich.ibm.com>; jgg@ziepe.ca; leon@kernel.org > Cc: linux-rdma@vger.kernel.org > 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@linux.dev> > --- > 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@zurich.ibm.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V4 00/18] Cleanup for siw [not found] <20231027132644.29347-1-guoqing.jiang@linux.dev> ` (3 preceding siblings ...) [not found] ` <20231027132644.29347-2-guoqing.jiang@linux.dev> @ 2023-11-13 8:38 ` Leon Romanovsky 2023-11-13 11:59 ` Guoqing Jiang 4 siblings, 1 reply; 7+ messages in thread From: Leon Romanovsky @ 2023-11-13 8:38 UTC (permalink / raw) To: Guoqing Jiang; +Cc: bmt, jgg, linux-rdma On Fri, Oct 27, 2023 at 09:26:26PM +0800, Guoqing Jiang wrote: > V4 changes: > 1. add Acked-by tags. > 2. update patch 3 and patch 12 per Bernard's review. > 3. update patch header in patch 18. > > V3 changes: > 1. add Acked-by tags. > 2. drop 2 patches and address other comments. > > Appreciate for Bernard's review! > > V2 changes: > 1. address W=1 warning in patch 12 and 19 per the report from lkp. > 2. add one more patch (20th). > > Hi, > > This series aim to cleanup siw code, please review and comment! This series wasn't sent properly and it doesn't exist in patchworks and lore. Please resend it properly. Thanks ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V4 00/18] Cleanup for siw 2023-11-13 8:38 ` [PATCH V4 00/18] Cleanup for siw Leon Romanovsky @ 2023-11-13 11:59 ` Guoqing Jiang 2023-11-13 12:38 ` Leon Romanovsky 0 siblings, 1 reply; 7+ messages in thread From: Guoqing Jiang @ 2023-11-13 11:59 UTC (permalink / raw) To: Leon Romanovsky; +Cc: bmt, jgg, linux-rdma On 11/13/23 16:38, Leon Romanovsky wrote: > On Fri, Oct 27, 2023 at 09:26:26PM +0800, Guoqing Jiang wrote: >> V4 changes: >> 1. add Acked-by tags. >> 2. update patch 3 and patch 12 per Bernard's review. >> 3. update patch header in patch 18. >> >> V3 changes: >> 1. add Acked-by tags. >> 2. drop 2 patches and address other comments. >> >> Appreciate for Bernard's review! >> >> V2 changes: >> 1. address W=1 warning in patch 12 and 19 per the report from lkp. >> 2. add one more patch (20th). >> >> Hi, >> >> This series aim to cleanup siw code, please review and comment! > This series wasn't sent properly and it doesn't exist in patchworks and lore. > Please resend it properly. Done. https://lore.kernel.org/linux-rdma/20231113115726.12762-1-guoqing.jiang@linux.dev/T/#t Thanks, Guoqing ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V4 00/18] Cleanup for siw 2023-11-13 11:59 ` Guoqing Jiang @ 2023-11-13 12:38 ` Leon Romanovsky 0 siblings, 0 replies; 7+ messages in thread From: Leon Romanovsky @ 2023-11-13 12:38 UTC (permalink / raw) To: Guoqing Jiang; +Cc: bmt, jgg, linux-rdma On Mon, Nov 13, 2023 at 07:59:27PM +0800, Guoqing Jiang wrote: > > > On 11/13/23 16:38, Leon Romanovsky wrote: > > On Fri, Oct 27, 2023 at 09:26:26PM +0800, Guoqing Jiang wrote: > > > V4 changes: > > > 1. add Acked-by tags. > > > 2. update patch 3 and patch 12 per Bernard's review. > > > 3. update patch header in patch 18. > > > > > > V3 changes: > > > 1. add Acked-by tags. > > > 2. drop 2 patches and address other comments. > > > > > > Appreciate for Bernard's review! > > > > > > V2 changes: > > > 1. address W=1 warning in patch 12 and 19 per the report from lkp. > > > 2. add one more patch (20th). > > > > > > Hi, > > > > > > This series aim to cleanup siw code, please review and comment! > > This series wasn't sent properly and it doesn't exist in patchworks and lore. > > Please resend it properly. > > Done. > > https://lore.kernel.org/linux-rdma/20231113115726.12762-1-guoqing.jiang@linux.dev/T/#t Thanks > > Thanks, > Guoqing ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-11-13 12:38 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20231027132644.29347-1-guoqing.jiang@linux.dev>
[not found] ` <20231027132644.29347-3-guoqing.jiang@linux.dev>
2023-10-30 13:34 ` [PATCH V4 02/18] RDMA/siw: Introduce siw_update_skb_rcvd Bernard Metzler
[not found] ` <20231027132644.29347-13-guoqing.jiang@linux.dev>
2023-10-30 13:35 ` [PATCH V4 12/18] RDMA/siw: Introduce siw_free_cm_id Bernard Metzler
[not found] ` <20231027132644.29347-9-guoqing.jiang@linux.dev>
2023-10-30 13:37 ` [PATCH V4 08/18] RDMA/siw: Factor out siw_rx_data helper Bernard Metzler
[not found] ` <20231027132644.29347-2-guoqing.jiang@linux.dev>
2023-10-30 13:43 ` [PATCH V4 01/18] RDMA/siw: Introduce siw_get_page Bernard Metzler
2023-11-13 8:38 ` [PATCH V4 00/18] Cleanup for siw Leon Romanovsky
2023-11-13 11:59 ` Guoqing Jiang
2023-11-13 12:38 ` Leon Romanovsky
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox