iw_cxgb4: Atomically flush per QP HW CQEs
authorBharat Potnuri <bharat@chelsio.com>
Fri, 27 Apr 2018 11:11:16 +0000 (16:41 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 May 2018 07:51:53 +0000 (09:51 +0200)
commit758f3340b8037d5f43e8c2ea564d7e5d1292ede6
tree00992880386079d32524bc874d15e783d0e8c52a
parentd7683a5c8c946c4b975c84accc70112750ea46b4
iw_cxgb4: Atomically flush per QP HW CQEs

commit 2df19e19ae90d94fd8724083f161f368a2797537 upstream.

When a CQ is shared by multiple QPs, c4iw_flush_hw_cq() needs to acquire
corresponding QP lock before moving the CQEs into its corresponding SW
queue and accessing the SQ contents for completing a WR.
Ignore CQEs if corresponding QP is already flushed.

Cc: stable@vger.kernel.org
Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com>
Reviewed-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/infiniband/hw/cxgb4/cq.c
drivers/infiniband/hw/cxgb4/iw_cxgb4.h
drivers/infiniband/hw/cxgb4/qp.c