From: Wenpeng Liang <liangwenp...@huawei.com>

[ Upstream commit 99fcf82521d91468ee6115a3c253aa032dc63cbc ]

The rnr_retry returned to the user is not correct, it should be got from
another fields in QPC.

Fixes: bfe860351e31 ("RDMA/hns: Fix cast from or to restricted __le32 for 
driver")
Link: 
https://lore.kernel.org/r/1600509802-44382-7-git-send-email-liweih...@huawei.com
Signed-off-by: Wenpeng Liang <liangwenp...@huawei.com>
Signed-off-by: Weihang Li <liweih...@huawei.com>
Signed-off-by: Jason Gunthorpe <j...@nvidia.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c 
b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
index fdd9605c67630..a55a850a8b997 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
@@ -4795,7 +4795,9 @@ static int hns_roce_v2_query_qp(struct ib_qp *ibqp, 
struct ib_qp_attr *qp_attr,
        qp_attr->retry_cnt = roce_get_field(context.byte_212_lsn,
                                            V2_QPC_BYTE_212_RETRY_CNT_M,
                                            V2_QPC_BYTE_212_RETRY_CNT_S);
-       qp_attr->rnr_retry = le32_to_cpu(context.rq_rnr_timer);
+       qp_attr->rnr_retry = roce_get_field(context.byte_244_rnr_rxack,
+                                           V2_QPC_BYTE_244_RNR_CNT_M,
+                                           V2_QPC_BYTE_244_RNR_CNT_S);
 
 done:
        qp_attr->cur_qp_state = qp_attr->qp_state;
-- 
2.25.1



Reply via email to