summaryrefslogtreecommitdiff
path: root/drivers/infiniband/hw/i40iw/i40iw_hw.c
diff options
context:
space:
mode:
authorHenry Orosco <henry.orosco@intel.com>2018-03-14 22:45:23 +0300
committerJason Gunthorpe <jgg@mellanox.com>2018-03-16 00:58:05 +0300
commit546b1452fdcccdcc98962b324cab6d74fc976fe9 (patch)
tree50d9455c9a21a5484a1d58f9ed04708aaae67252 /drivers/infiniband/hw/i40iw/i40iw_hw.c
parenta8b9234b1272de7a2af87e076fad51ba096a3c30 (diff)
downloadlinux-546b1452fdcccdcc98962b324cab6d74fc976fe9.tar.xz
i40iw: Tear-down connection after CQP Modify QP failure
There is no explicit tear-down sequence initiated on connections if the Control QP OP, Modify QP to close, fails. Fix this by triggering a driver generated Asynchronous Event (AE) on Modify QP failures and tear-down the connection on receipt of the AE. This fix can be generalized to other Modify QP failures (i.e. RTS->TERM, IDLE->RTS, etc) as any modify failure will require a connection tear-down. Fixes: d37498417947 ("i40iw: add files for iwarp interface") Signed-off-by: Henry Orosco <henry.orosco@intel.com> Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'drivers/infiniband/hw/i40iw/i40iw_hw.c')
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_hw.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/i40iw/i40iw_hw.c b/drivers/infiniband/hw/i40iw/i40iw_hw.c
index d7af9a25bf1a..6139836fb533 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_hw.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_hw.c
@@ -352,6 +352,8 @@ void i40iw_process_aeq(struct i40iw_device *iwdev)
else
i40iw_cm_disconn(iwqp);
break;
+ case I40IW_AE_BAD_CLOSE:
+ /* fall through */
case I40IW_AE_RESET_SENT:
i40iw_next_iw_state(iwqp, I40IW_QP_STATE_ERROR, 1, 0, 0);
i40iw_cm_disconn(iwqp);