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. 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(-)