RDMA/ocrdma: Avoid reporting wrong completions in case of error CQEs
[linux-2.6-block.git] / drivers / infiniband / hw / ocrdma / ocrdma_verbs.c
index 0d7d8083287fe9c418e87263cb6b15bb95a3465a..2b68235973d7786869565fdf3f22c7794e13e091 100644 (file)
@@ -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);