diff mbox series

[for-rc,1/2] RDMA/hns: Bugfix for releasing reserved qp

Message ID 1556204854-90092-2-git-send-email-oulijun@huawei.com (mailing list archive)
State Accepted
Delegated to: Jason Gunthorpe
Headers show
Series Two bugs fixes for hip08 | expand

Commit Message

Lijun Ou April 25, 2019, 3:07 p.m. UTC
Hip06 reserves 12 qps, Hip08 reserves 8 qps. When the QP is released
based on hip08, the 8 to 11 reserved qp cannot released.

Fixes: 926a01dc000d ("RDMA/hns: Add QP operations support for hip08 SoC")
Signed-off-by: Lang Cheng <chenglang@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
---
 drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 1 +
 drivers/infiniband/hw/hns/hns_roce_hw_v1.h | 1 +
 drivers/infiniband/hw/hns/hns_roce_qp.c    | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)

Comments

Jason Gunthorpe May 2, 2019, 7:19 p.m. UTC | #1
On Thu, Apr 25, 2019 at 11:07:33PM +0800, Lijun Ou wrote:
> Hip06 reserves 12 qps, Hip08 reserves 8 qps. When the QP is released
> based on hip08, the 8 to 11 reserved qp cannot released.
> 
> Fixes: 926a01dc000d ("RDMA/hns: Add QP operations support for hip08 SoC")
> Signed-off-by: Lang Cheng <chenglang@huawei.com>
> Signed-off-by: Lijun Ou <oulijun@huawei.com>
> ---
>  drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 1 +
>  drivers/infiniband/hw/hns/hns_roce_hw_v1.h | 1 +
>  drivers/infiniband/hw/hns/hns_roce_qp.c    | 2 +-
>  3 files changed, 3 insertions(+), 1 deletion(-)

Applied to for-next

Thanks,
Jason
diff mbox series

Patch

diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c
index 97515c3..9f19d97 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c
@@ -1588,6 +1588,7 @@  static int hns_roce_v1_profile(struct hns_roce_dev *hr_dev)
 	caps->reserved_mrws	= 1;
 	caps->reserved_uars	= 0;
 	caps->reserved_cqs	= 0;
+	caps->reserved_qps	= HNS_ROCE_V1_RSV_QPS;
 	caps->chunk_sz		= HNS_ROCE_V1_TABLE_CHUNK_SIZE;
 
 	for (i = 0; i < caps->num_ports; i++)
diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v1.h b/drivers/infiniband/hw/hns/hns_roce_hw_v1.h
index 6644014..14e167b 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v1.h
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v1.h
@@ -120,6 +120,7 @@ 
 #define HNS_ROCE_V1_FREE_MR_WAIT_VALUE			5
 #define HNS_ROCE_V1_RECREATE_LP_QP_WAIT_VALUE		20
 
+#define HNS_ROCE_V1_RSV_QPS				12
 #define HNS_ROCE_BT_RSV_BUF_SIZE			(1 << 17)
 
 #define HNS_ROCE_V1_TPTR_ENTRY_SIZE			2
diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
index 66cdf62..b719c38 100644
--- a/drivers/infiniband/hw/hns/hns_roce_qp.c
+++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
@@ -288,7 +288,7 @@  void hns_roce_release_range_qp(struct hns_roce_dev *hr_dev, int base_qpn,
 {
 	struct hns_roce_qp_table *qp_table = &hr_dev->qp_table;
 
-	if (base_qpn < SQP_NUM)
+	if (base_qpn < hr_dev->caps.reserved_qps)
 		return;
 
 	hns_roce_bitmap_free_range(&qp_table->bitmap, base_qpn, cnt, BITMAP_RR);