提交 006c73b9 编写于 作者: L Lang Cheng 提交者: Xie XiuQi

RDMA/hns: Fixup qp release bug

driver inclusion
category: bugfix
bugzilla: NA
CVE: NA

Hip06 reserve 12 qps, Hip08 reserve 8 qps.
When the QP is released, the chip model is not judged,
and the Hip08 cannot release the qpn 8~12.

Feature or Bugfix:Bugfix
Signed-off-by: NLang Cheng <chenglang@huawei.com>
Reviewed-by: Nliuyixian <liuyixian@huawei.com>
Reviewed-by: NYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 83e9d3e8
...@@ -1606,6 +1606,7 @@ static int hns_roce_v1_profile(struct hns_roce_dev *hr_dev) ...@@ -1606,6 +1606,7 @@ static int hns_roce_v1_profile(struct hns_roce_dev *hr_dev)
caps->reserved_mrws = 1; caps->reserved_mrws = 1;
caps->reserved_uars = 0; caps->reserved_uars = 0;
caps->reserved_cqs = 0; caps->reserved_cqs = 0;
caps->reserved_qps = 12; /* 2 SQP per port, six ports total 12 */
caps->chunk_sz = HNS_ROCE_V1_TABLE_CHUNK_SIZE; caps->chunk_sz = HNS_ROCE_V1_TABLE_CHUNK_SIZE;
for (i = 0; i < caps->num_ports; i++) for (i = 0; i < caps->num_ports; i++)
......
...@@ -328,7 +328,7 @@ void hns_roce_release_range_qp(struct hns_roce_dev *hr_dev, int base_qpn, ...@@ -328,7 +328,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; 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; return;
hns_roce_bitmap_free_range(&qp_table->bitmap, base_qpn, cnt, BITMAP_RR); hns_roce_bitmap_free_range(&qp_table->bitmap, base_qpn, cnt, BITMAP_RR);
...@@ -1405,11 +1405,7 @@ int hns_roce_init_qp_table(struct hns_roce_dev *hr_dev) ...@@ -1405,11 +1405,7 @@ int hns_roce_init_qp_table(struct hns_roce_dev *hr_dev)
spin_lock_init(&qp_table->lock); spin_lock_init(&qp_table->lock);
INIT_RADIX_TREE(&hr_dev->qp_table_tree, GFP_ATOMIC); INIT_RADIX_TREE(&hr_dev->qp_table_tree, GFP_ATOMIC);
/* In hw v1, a port include two SQP, six ports total 12 */ reserved_from_bot = hr_dev->caps.reserved_qps;
if (hr_dev->caps.max_sq_sg <= HNS_ROCE_MAX_SGE_NUM)
reserved_from_bot = SQP_NUM;
else
reserved_from_bot = hr_dev->caps.reserved_qps;
ret = hns_roce_bitmap_init(&qp_table->bitmap, hr_dev->caps.num_qps, ret = hns_roce_bitmap_init(&qp_table->bitmap, hr_dev->caps.num_qps,
hr_dev->caps.num_qps - 1, reserved_from_bot, hr_dev->caps.num_qps - 1, reserved_from_bot,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册