stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH for-rc 1/2] IB/hfi1: Avoid excessive retry for TID RDMA READ request
       [not found] <20191004203739.26542.57060.stgit@awfm-01.aw.intel.com>
@ 2019-10-04 20:40 ` Dennis Dalessandro
  2019-10-17 20:34   ` Doug Ledford
  0 siblings, 1 reply; 2+ messages in thread
From: Dennis Dalessandro @ 2019-10-04 20:40 UTC (permalink / raw)
  To: jgg, dledford; +Cc: linux-rdma, Mike Marciniszyn, stable, Kaike Wan

From: Kaike Wan <kaike.wan@intel.com>

A TID RDMA READ request could be retried under one of the following
conditions:
- The RC retry timer expires;
- A later TID RDMA READ RESP packet is received before the next
  expected one.
For the latter, under normal conditions, the PSN in IB space is used
for comparison. More specifically, the IB PSN in the incoming TID RDMA
READ RESP packet is compared with the last IB PSN of a given TID RDMA
READ request to determine if the request should be retried. This is
similar to the retry logic for noraml RDMA READ request.

However, if a TID RDMA READ RESP packet is lost due to congestion,
header suppresion will be disabled and each incoming packet will raise
an interrupt until the hardware flow is reloaded. Under this condition,
each packet KDETH PSN will be checked by software against r_next_psn
and a retry will be requested if the packet KDETH PSN is later than
r_next_psn. Since each TID RDMA READ segment could have up to 64
packets and each TID RDMA READ request could have many segments, we
could make far more retries under such conditions, and thus leading to
RETRY_EXC_ERR status.

This patch fixes the issue by removing the retry when the incoming
packet KDETH PSN is later than r_next_psn. Instead, it resorts to
RC timer and normal IB PSN comparison for any request retry.

Fixes: 9905bf06e890 ("IB/hfi1: Add functions to receive TID RDMA READ response")
Cc: <stable@vger.kernel.org>
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
---
 drivers/infiniband/hw/hfi1/tid_rdma.c |    5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c
index b4dcc4d..f21fca3 100644
--- a/drivers/infiniband/hw/hfi1/tid_rdma.c
+++ b/drivers/infiniband/hw/hfi1/tid_rdma.c
@@ -2736,11 +2736,6 @@ static bool handle_read_kdeth_eflags(struct hfi1_ctxtdata *rcd,
 				diff = cmp_psn(psn,
 					       flow->flow_state.r_next_psn);
 				if (diff > 0) {
-					if (!(qp->r_flags & RVT_R_RDMAR_SEQ))
-						restart_tid_rdma_read_req(rcd,
-									  qp,
-									  wqe);
-
 					/* Drop the packet.*/
 					goto s_unlock;
 				} else if (diff < 0) {


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH for-rc 1/2] IB/hfi1: Avoid excessive retry for TID RDMA READ request
  2019-10-04 20:40 ` [PATCH for-rc 1/2] IB/hfi1: Avoid excessive retry for TID RDMA READ request Dennis Dalessandro
@ 2019-10-17 20:34   ` Doug Ledford
  0 siblings, 0 replies; 2+ messages in thread
From: Doug Ledford @ 2019-10-17 20:34 UTC (permalink / raw)
  To: Dennis Dalessandro, jgg; +Cc: linux-rdma, Mike Marciniszyn, stable, Kaike Wan

[-- Attachment #1: Type: text/plain, Size: 1955 bytes --]

On Fri, 2019-10-04 at 16:40 -0400, Dennis Dalessandro wrote:
> From: Kaike Wan <kaike.wan@intel.com>
> 
> A TID RDMA READ request could be retried under one of the following
> conditions:
> - The RC retry timer expires;
> - A later TID RDMA READ RESP packet is received before the next
>   expected one.
> For the latter, under normal conditions, the PSN in IB space is used
> for comparison. More specifically, the IB PSN in the incoming TID RDMA
> READ RESP packet is compared with the last IB PSN of a given TID RDMA
> READ request to determine if the request should be retried. This is
> similar to the retry logic for noraml RDMA READ request.
> 
> However, if a TID RDMA READ RESP packet is lost due to congestion,
> header suppresion will be disabled and each incoming packet will raise
> an interrupt until the hardware flow is reloaded. Under this
> condition,
> each packet KDETH PSN will be checked by software against r_next_psn
> and a retry will be requested if the packet KDETH PSN is later than
> r_next_psn. Since each TID RDMA READ segment could have up to 64
> packets and each TID RDMA READ request could have many segments, we
> could make far more retries under such conditions, and thus leading to
> RETRY_EXC_ERR status.
> 
> This patch fixes the issue by removing the retry when the incoming
> packet KDETH PSN is later than r_next_psn. Instead, it resorts to
> RC timer and normal IB PSN comparison for any request retry.
> 
> Fixes: 9905bf06e890 ("IB/hfi1: Add functions to receive TID RDMA READ
> response")
> Cc: <stable@vger.kernel.org>
> Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
> Signed-off-by: Kaike Wan <kaike.wan@intel.com>
> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>

Thanks, applied to for-rc.

-- 
Doug Ledford <dledford@redhat.com>
    GPG KeyID: B826A3330E572FDD
    Fingerprint = AE6B 1BDA 122B 23B4 265B  1274 B826 A333 0E57 2FDD

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-10-17 20:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20191004203739.26542.57060.stgit@awfm-01.aw.intel.com>
2019-10-04 20:40 ` [PATCH for-rc 1/2] IB/hfi1: Avoid excessive retry for TID RDMA READ request Dennis Dalessandro
2019-10-17 20:34   ` Doug Ledford

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).