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.
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.
Changes since V1:
* Add drain_rq/drain_sq assignments in struct ib_device_ops 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 | 6 +-
drivers/infiniband/hw/erdma/erdma_qp.c | 116 +++++++++++++++++++++-
drivers/infiniband/hw/erdma/erdma_verbs.h | 27 ++++-
3 files changed, 138 insertions(+), 11 deletions(-)