> -----Original Message----- > From: Tom Talpey <tom@xxxxxxxxxx> > Sent: Wednesday, 24 August 2022 16:09 > To: Cheng Xu <chengyou@xxxxxxxxxxxxxxxxx>; jgg@xxxxxxxx; leon@xxxxxxxxxx > Cc: linux-rdma@xxxxxxxxxxxxxxx; KaiShen@xxxxxxxxxxxxxxxxx > Subject: [EXTERNAL] Re: [PATCH for-next 0/2] RDMA/erdma: Introduce > custom implementation of drain_sq and drain_rq > > On 8/24/2022 5:42 AM, Cheng Xu wrote: > > Hi, > > > > This series introduces erdma's implementation of drain_sq and > drain_rq. > > Our hardware will stop processing any new WRs if QP state is error. > > Doesn't this violate the IB specification? Failing newly posted WRs > before older WRs have flushed to the CQ means that ordering is not > preserved. Many upper layers depend on this. > It would be ok to synchronously fail the post_send()/post_recv() call if the QP is in error, or the WR is malformed. In that case, the WR does not translate into a WQE and will not produce a work completion. Bernard. > Tom. > > > So the default __ib_drain_sq and __ib_drain_rq in core code can not > work > > for erdma. For this reason, we implement the drain_sq and drain_rq > > interfaces. > > > > In SQ draining or RQ draining, we post both drain send wr and drain > > recv wr, and then modify_qp to error. At last, we wait the > corresponding > > completion in the separated interface. > > > > The first patch introduces internal post_send/post_recv for qp drain, > and > > the second patch implements the drain_sq and drain_rq of erdma. > > > > Thanks, > > Cheng Xu > > > > Cheng Xu (2): > > RDMA/erdma: Introduce internal post_send/post_recv for qp drain > > RDMA/erdma: Add drain_sq and drain_rq support > > > > drivers/infiniband/hw/erdma/erdma_main.c | 4 +- > > drivers/infiniband/hw/erdma/erdma_qp.c | 116 > +++++++++++++++++++++- > > drivers/infiniband/hw/erdma/erdma_verbs.h | 27 ++++- > > 3 files changed, 136 insertions(+), 11 deletions(-) > >