| From f55688c45442bc863f40ad678c638785b26cdce6 Mon Sep 17 00:00:00 2001 |
| From: Steve Wise <swise@opengridcomputing.com> |
| Date: Mon, 18 Dec 2017 13:10:00 -0800 |
| Subject: iw_cxgb4: Only validate the MSN for successful completions |
| |
| From: Steve Wise <swise@opengridcomputing.com> |
| |
| commit f55688c45442bc863f40ad678c638785b26cdce6 upstream. |
| |
| If the RECV CQE is in error, ignore the MSN check. This was causing |
| recvs that were flushed into the sw cq to be completed with the wrong |
| status (BAD_MSN instead of FLUSHED). |
| |
| Signed-off-by: Steve Wise <swise@opengridcomputing.com> |
| Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/infiniband/hw/cxgb4/cq.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/infiniband/hw/cxgb4/cq.c |
| +++ b/drivers/infiniband/hw/cxgb4/cq.c |
| @@ -575,10 +575,10 @@ static int poll_cq(struct t4_wq *wq, str |
| ret = -EAGAIN; |
| goto skip_cqe; |
| } |
| - if (unlikely((CQE_WRID_MSN(hw_cqe) != (wq->rq.msn)))) { |
| + if (unlikely(!CQE_STATUS(hw_cqe) && |
| + CQE_WRID_MSN(hw_cqe) != wq->rq.msn)) { |
| t4_set_wq_in_error(wq); |
| - hw_cqe->header |= htonl(CQE_STATUS_V(T4_ERR_MSN)); |
| - goto proc_cqe; |
| + hw_cqe->header |= cpu_to_be32(CQE_STATUS_V(T4_ERR_MSN)); |
| } |
| goto proc_cqe; |
| } |