Fast registration and local invalidate work requests can
also fail. We should call error completion handler for them.

Reported-by: Roi Dayan <r...@mellanox.com>
Signed-off-by: Sagi Grimberg <sa...@mellanox.com>
---
 drivers/infiniband/ulp/iser/iser_verbs.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c 
b/drivers/infiniband/ulp/iser/iser_verbs.c
index 070c5af..7ee4926 100644
--- a/drivers/infiniband/ulp/iser/iser_verbs.c
+++ b/drivers/infiniband/ulp/iser/iser_verbs.c
@@ -1210,6 +1210,9 @@ iser_handle_comp_error(struct ib_conn *ib_conn,
                        iscsi_conn_failure(iser_conn->iscsi_conn,
                                           ISCSI_ERR_CONN_FAILED);
 
+       if (wc->wr_id == ISER_FASTREG_LI_WRID)
+               return;
+
        if (is_iser_tx_desc(iser_conn, wr_id)) {
                struct iser_tx_desc *desc = wr_id;
 
@@ -1254,13 +1257,11 @@ static void iser_handle_wc(struct ib_wc *wc)
                else
                        iser_dbg("flush error: wr id %llx\n", wc->wr_id);
 
-               if (wc->wr_id != ISER_FASTREG_LI_WRID &&
-                   wc->wr_id != ISER_BEACON_WRID)
-                       iser_handle_comp_error(ib_conn, wc);
-
-               /* complete in case all flush errors were consumed */
                if (wc->wr_id == ISER_BEACON_WRID)
+                       /* all flush errors were consumed */
                        complete(&ib_conn->flush_comp);
+               else
+                       iser_handle_comp_error(ib_conn, wc);
        }
 }
 
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to