iw_cxgb4: do not send RX_DATA_ACK CPLs after close/abort
authorSteve Wise <swise@opengridcomputing.com>
Thu, 22 Dec 2016 15:40:37 +0000 (07:40 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Aug 2017 15:49:36 +0000 (08:49 -0700)
commit44d52834efb3d23e73a014afd8b22cfedb9a0eae
tree2c58911f98f1c14adfb0865375305fcdfbd7d785
parent984922f2c897f669e994ad851eb799d8348f92fd
iw_cxgb4: do not send RX_DATA_ACK CPLs after close/abort

[ Upstream commit 3bcf96e0183f5c863657cb6ae9adad307a0f6071 ]

Function rx_data(), which handles ingress CPL_RX_DATA messages, was
always sending an RX_DATA_ACK with the goal of updating the credits.
However, if the RDMA connection is moved out of FPDU mode abruptly,
then it is possible for iw_cxgb4 to process queued RX_DATA CPLs after HW
has aborted the connection.  These CPLs should not trigger RX_DATA_ACKS.
If they do, HW can see a READ after DELETE of the DB_LE hash entry for
the tid and post a LE_DB HashTblMemCrcError.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/infiniband/hw/cxgb4/cm.c