The cq polling logic was hitting an infinite loop while generating
flush completions for a torn down QP. This patch adds a check in
flush completion logic to detect SQ/RQ empty condition and stop
polling loop.
Signed-off-by: Devesh Sharma <devesh.sharma@emulex.com>
Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com>
*stop = 1;
expand = 0;
}
+ } else if (is_hw_sq_empty(qp)) {
+ /* Do nothing */
+ expand = 0;
+ *polled = 0;
+ *stop = 0;
} else {
*polled = 1;
expand = ocrdma_update_err_scqe(ibwc, cqe, qp, status);
*stop = 1;
expand = 0;
}
+ } else if (is_hw_rq_empty(qp)) {
+ /* Do nothing */
+ expand = 0;
+ *polled = 0;
+ *stop = 0;
} else {
*polled = 1;
expand = ocrdma_update_err_rcqe(ibwc, cqe, qp, status);