From f98b0f9b43ee1d8a512b4fa5ea1ff7979a2673f6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Trivi=C3=B1o?= Date: Thu, 30 Jun 2016 10:49:47 +0200 Subject: [PATCH] sif: WA#3714: Set flush_retry_qp transport timer to infinite MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The flush_retry_qp is configured with a minimum timeout of 6 value 262.144 usec), in combination with bug#4146 (duplicate send requests not Acked if target RQ is empty) seems to be the reason because driver is running into some timeouts after applying WA#3714 (waiting for the completion of the zero post send). This commit set the flush_retry_qp transport timer to infinite (0 value) Signed-off-by: Triviño Reviewed-by: Knut Omang --- drivers/infiniband/hw/sif/sif_r3.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/hw/sif/sif_r3.c b/drivers/infiniband/hw/sif/sif_r3.c index 0a2d05e08c1b..9ac7fa7a8357 100644 --- a/drivers/infiniband/hw/sif/sif_r3.c +++ b/drivers/infiniband/hw/sif/sif_r3.c @@ -273,7 +273,7 @@ static int sif_hw_allocate_flush_qp(struct sif_dev *sdev, u8 flush_idx) memset(&qp_attr, 0, sizeof(qp_attr)); qp_attr.qp_state = IB_QPS_RTS; qp_attr.sq_psn = 0; - qp_attr.timeout = 6; + qp_attr.timeout = 0; qp_attr.retry_cnt = 7; qp_attr.rnr_retry = 7; qp_attr.max_rd_atomic = 1; @@ -446,6 +446,11 @@ int reset_qp_flush_retry(struct sif_dev *sdev, u8 flush_idx) for (sts = 0; sts < count; sts++) sif_log(sdev, SIF_INFO, "wr_id %lld status %d opcode %d", wcs[sts].wr_id, wcs[sts].status, wcs[sts].opcode); + ret = epsc_query_qp(qp, &lqqp); + if (ret) + sif_log(sdev, SIF_INFO, "epsc_query_qp failed with status %d", ret); + + sif_logs(SIF_INFO, write_struct_psif_query_qp(NULL, 0, &lqqp)); goto fail; } } -- 2.50.1