From: Triviño Date: Thu, 30 Jun 2016 08:49:47 +0000 (+0200) Subject: sif: WA#3714: Set flush_retry_qp transport timer to infinite X-Git-Tag: v4.1.12-92~129^2~6 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=f98b0f9b43ee1d8a512b4fa5ea1ff7979a2673f6;p=users%2Fjedix%2Flinux-maple.git sif: WA#3714: Set flush_retry_qp transport timer to infinite 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 --- 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; } }