Commit 54bce7f0 authored by Juan Zhou's avatar Juan Zhou
Browse files

Revert "RDMA/hns: Fix CQ and QP cache affinity"

driver inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I8E9OJ



--------------------------------------------------------------------------

This reverts commit d522f7af.

Signed-off-by: default avatarJuan Zhou <zhoujuan51@h-partners.com>
parent bfc27e0e
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -104,7 +104,6 @@
#define HNS_ROCE_CQ_BANK_NUM 4
#define HNS_ROCE_CQ_BANK_NUM 4


#define CQ_BANKID_SHIFT 2
#define CQ_BANKID_SHIFT 2
#define CQ_BANKID_MASK GENMASK(1, 0)


#define MAX_NOTIFY_MEM_SIZE BIT(24)
#define MAX_NOTIFY_MEM_SIZE BIT(24)


+6 −23
Original line number Original line Diff line number Diff line
@@ -170,29 +170,14 @@ static void hns_roce_ib_qp_event(struct hns_roce_qp *hr_qp,
	}
	}
}
}


static u8 get_affinity_cq_bank(u8 qp_bank)
static u8 get_least_load_bankid_for_qp(struct hns_roce_bank *bank)
{
{
	return (qp_bank >> 1) & CQ_BANKID_MASK;
	u32 least_load = bank[0].inuse;
}

static u8 get_least_load_bankid_for_qp(struct ib_qp_init_attr *init_attr,
				       struct hns_roce_bank *bank)
{
#define INVALID_LOAD_QPNUM 0xFFFFFFFF
	struct ib_cq *scq = init_attr->send_cq;
	u32 least_load = INVALID_LOAD_QPNUM;
	unsigned long cqn = 0;
	u8 bankid = 0;
	u8 bankid = 0;
	u32 bankcnt;
	u32 bankcnt;
	u8 i;
	u8 i;


	if (scq)
	for (i = 1; i < HNS_ROCE_QP_BANK_NUM; i++) {
		cqn = to_hr_cq(scq)->cqn;

	for (i = 0; i < HNS_ROCE_QP_BANK_NUM; i++) {
		if (scq && (get_affinity_cq_bank(i) != (cqn & CQ_BANKID_MASK)))
			continue;

		bankcnt = bank[i].inuse;
		bankcnt = bank[i].inuse;
		if (bankcnt < least_load) {
		if (bankcnt < least_load) {
			least_load = bankcnt;
			least_load = bankcnt;
@@ -224,9 +209,7 @@ static int alloc_qpn_with_bankid(struct hns_roce_bank *bank, u8 bankid,


	return 0;
	return 0;
}
}

static int alloc_qpn(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp)
static int alloc_qpn(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp,
		     struct ib_qp_init_attr *init_attr)
{
{
	struct hns_roce_qp_table *qp_table = &hr_dev->qp_table;
	struct hns_roce_qp_table *qp_table = &hr_dev->qp_table;
	unsigned long num = 0;
	unsigned long num = 0;
@@ -237,7 +220,7 @@ static int alloc_qpn(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp,
		num = 1;
		num = 1;
	} else {
	} else {
		mutex_lock(&qp_table->bank_mutex);
		mutex_lock(&qp_table->bank_mutex);
		bankid = get_least_load_bankid_for_qp(init_attr, qp_table->bank);
		bankid = get_least_load_bankid_for_qp(qp_table->bank);


		ret = alloc_qpn_with_bankid(&qp_table->bank[bankid], bankid,
		ret = alloc_qpn_with_bankid(&qp_table->bank[bankid], bankid,
					    &num);
					    &num);
@@ -1292,7 +1275,7 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev,
		}
		}
	}
	}


	ret = alloc_qpn(hr_dev, hr_qp, init_attr);
	ret = alloc_qpn(hr_dev, hr_qp);
	if (ret) {
	if (ret) {
		ibdev_err(ibdev, "failed to alloc QPN, ret = %d.\n", ret);
		ibdev_err(ibdev, "failed to alloc QPN, ret = %d.\n", ret);
		goto err_qpn;
		goto err_qpn;