| From 2e39847097b8c688eb74a7aca884ac96f8572ee3 Mon Sep 17 00:00:00 2001 |
| From: Lijun Ou <oulijun@huawei.com> |
| Date: Thu, 24 Oct 2019 17:21:56 +0800 |
| Subject: [PATCH] RDMA/hns: Fix to support 64K page for srq |
| |
| commit 5c7e76fb7cb5071be800c938ebf2c475e140d3f0 upstream. |
| |
| SRQ's page size configuration of BA and buffer should depend on current |
| PAGE_SHIFT, or it can't work in scenario of 64K page. |
| |
| Fixes: c7bcb13442e1 ("RDMA/hns: Add SRQ support for hip08 kernel mode") |
| Link: https://lore.kernel.org/r/1571908917-16220-2-git-send-email-liweihang@hisilicon.com |
| Signed-off-by: Lijun Ou <oulijun@huawei.com> |
| Signed-off-by: Weihang Li <liweihang@hisilicon.com> |
| Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c |
| index cfa9e4403a85..a57211d78a63 100644 |
| --- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c |
| +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c |
| @@ -5860,11 +5860,11 @@ static void hns_roce_v2_write_srqc(struct hns_roce_dev *hr_dev, |
| roce_set_field(srq_context->byte_44_idxbufpgsz_addr, |
| SRQC_BYTE_44_SRQ_IDX_BA_PG_SZ_M, |
| SRQC_BYTE_44_SRQ_IDX_BA_PG_SZ_S, |
| - hr_dev->caps.idx_ba_pg_sz); |
| + hr_dev->caps.idx_ba_pg_sz + PG_SHIFT_OFFSET); |
| roce_set_field(srq_context->byte_44_idxbufpgsz_addr, |
| SRQC_BYTE_44_SRQ_IDX_BUF_PG_SZ_M, |
| SRQC_BYTE_44_SRQ_IDX_BUF_PG_SZ_S, |
| - hr_dev->caps.idx_buf_pg_sz); |
| + hr_dev->caps.idx_buf_pg_sz + PG_SHIFT_OFFSET); |
| |
| srq_context->idx_nxt_blk_addr = (u32)(mtts_idx[1] >> PAGE_ADDR_SHIFT); |
| srq_context->idx_nxt_blk_addr = |
| -- |
| 2.7.4 |
| |