Commit a8adbf7d authored by Kaike Wan's avatar Kaike Wan Committed by Doug Ledford

IB/hfi1: Add additional checks when handling TID RDMA READ RESP packet

In a congested fabric with adaptive routing enabled, traces show that
packets could be delivered out of order, which could cause incorrect
processing of stale packets. For stale TID RDMA READ RESP packets that
cause KDETH EFLAGS errors, this patch adds additional checks before
processing the packets.

Fixes: 9905bf06 ("IB/hfi1: Add functions to receive TID RDMA READ response")
Cc: <stable@vger.kernel.org>
Reviewed-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: default avatarKaike Wan <kaike.wan@intel.com>
Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Link: https://lore.kernel.org/r/20190815192045.105923.59813.stgit@awfm-01.aw.intel.comSigned-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 35d5c8b8
...@@ -2740,9 +2740,12 @@ static bool handle_read_kdeth_eflags(struct hfi1_ctxtdata *rcd, ...@@ -2740,9 +2740,12 @@ static bool handle_read_kdeth_eflags(struct hfi1_ctxtdata *rcd,
wqe = do_rc_completion(qp, wqe, ibp); wqe = do_rc_completion(qp, wqe, ibp);
if (qp->s_acked == qp->s_tail) if (qp->s_acked == qp->s_tail)
break; goto s_unlock;
} }
if (qp->s_acked == qp->s_tail)
goto s_unlock;
/* Handle the eflags for the request */ /* Handle the eflags for the request */
if (wqe->wr.opcode != IB_WR_TID_RDMA_READ) if (wqe->wr.opcode != IB_WR_TID_RDMA_READ)
goto s_unlock; goto s_unlock;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment