Thread (1 message) 1 message, 1 author, 2014-06-10

[PATCH v1 for-next 08/16] RDMA/ocrdma: Avoid reporting wrong completions in case of error CQEs

DORMANTno replies

From: Selvin Xavier <hidden>
Date: 2014-06-10 14:02:19
Subsystem: emulex oneconnect roce driver, infiniband subsystem, the rest · Maintainers: Selvin Xavier, Jason Gunthorpe, Leon Romanovsky, Linus Torvalds

During cable pull test with a mount over nfs rdma, driver was reporting
error completions when there was no pending requests in the SQ and RQ.
This was triggering a host crash because of reporting wrong work req id.
Avoid this crash by adding a check for SQ and RQ empty condition and
prevent reporting completions if queues are empty.

Signed-off-by: Selvin Xavier <redacted>
Signed-off-by: Devesh Sharma <redacted>
---
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
index 0d7d808..2b68235 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
@@ -2489,6 +2489,11 @@ static bool ocrdma_poll_err_scqe(struct ocrdma_qp *qp,
 			*stop = true;
 			expand = false;
 		}
+	} else if (is_hw_sq_empty(qp)) {
+		/* Do nothing */
+		expand = false;
+		*polled = false;
+		*stop = false;
 	} else {
 		*polled = true;
 		expand = ocrdma_update_err_scqe(ibwc, cqe, qp, status);
@@ -2594,6 +2599,11 @@ static bool ocrdma_poll_err_rcqe(struct ocrdma_qp *qp, struct ocrdma_cqe *cqe,
 			*stop = true;
 			expand = false;
 		}
+	} else if (is_hw_rq_empty(qp)) {
+		/* Do nothing */
+		expand = false;
+		*polled = false;
+		*stop = false;
 	} else {
 		*polled = true;
 		expand = ocrdma_update_err_rcqe(ibwc, cqe, qp, status);
-- 
1.6.0.2

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help