]> git.baikalelectronics.ru Git - kernel.git/commit
RDMA/bnxt_re: Allow posting when QPs are in error
authorSelvin Xavier <selvin.xavier@broadcom.com>
Thu, 29 Jun 2017 19:28:15 +0000 (12:28 -0700)
committerDoug Ledford <dledford@redhat.com>
Mon, 24 Jul 2017 12:45:12 +0000 (08:45 -0400)
commit791dd769617ea6d485848b014884a0ad9a294c3c
tree4868296098c26b34fa57c563675154ad82585f5b
parent9359ce9878320bf3727c0aab0cffd4345ca56e9a
RDMA/bnxt_re: Allow posting when QPs are in error

This  patch allows driver to post send and receive
requests on QPs which are in  error state.

Instead of flushing the QP in the context of polling
error CQEs, the QPs will be added to a flush list
maintained per CQ. QP state is moved to error.
QP is added to flush list if the user moves it
to error state using modify_qp also. After polling the HW
CQ in poll_cq routine, this flush list is traversed
and driver completes work requests on each QP in the flush
list, till the budget expires. The QP is moved out of
flush list during QP destroy or during modify_QP to RESET.

When ULPs post Work Requests while QP is in error state,
driver will store the ULP data and then increment the
QP producer s/w index, without ringing doorbell. It then
schedules a worker to invoke the CQ handler since the
interrupts wont be generated from the HW for this request.

Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/bnxt_re/ib_verbs.c
drivers/infiniband/hw/bnxt_re/main.c
drivers/infiniband/hw/bnxt_re/qplib_fp.c
drivers/infiniband/hw/bnxt_re/qplib_fp.h
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
drivers/infiniband/hw/bnxt_re/qplib_rcfw.h