Unverified Commit 67d516f9 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!3256 RDMA/hns: Cleanups of some optimize code

Merge Pull Request from: @stinft 
 
This pr optimizes the code for code readability, such as code refactoring, replacing magic numbers with macros, and deleting useless code.

Chengchang Tang (5):
   RDMA/hns: Replace magic number when fill ADDR to HW
   RDMA/hns: Remove extra blank line in get_sge_num_from_max_inl_data()
   RDMA/hns: Remove unused parameters detected by -Wextra
   RDMA/hns: Refactor mtr find
   RDMA/hns: Remove useless NULL check in hns_roce_get_netdev()
 Junxian Huang (2):
   RDMA/hns: Improve readability of check_bond_support()
   RDMA/hns: Add more check for bonding-unsupported cases
 Yangyang Li (1):
   RDMA/hns: Use macro instead of magic number
 wenglianfa (2):
   RDMA/hns: Fix the spin_lock and spin_unlock objects are inconsistent
   RDMA/hns: Cleanup for debugfs

bugzilla: https://gitee.com/openeuler/kernel/issues/I8LY0D 
 
Link:https://gitee.com/openeuler/kernel/pulls/3256

 

Reviewed-by: default avatarChengchang Tang <tangchengchang@huawei.com>
Signed-off-by: default avatarJialin Zhang <zhangjialin11@huawei.com>
parents 47e1417d 0d76b878
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -129,7 +129,7 @@ struct hns_roce_buf *hns_roce_buf_alloc(struct hns_roce_dev *hr_dev, u32 size,
	return buf;
}

int hns_roce_get_kmem_bufs(struct hns_roce_dev *hr_dev, dma_addr_t *bufs,
int hns_roce_get_kmem_bufs(dma_addr_t *bufs,
			   int buf_cnt, struct hns_roce_buf *buf,
			   unsigned int page_shift)
{
@@ -147,8 +147,7 @@ int hns_roce_get_kmem_bufs(struct hns_roce_dev *hr_dev, dma_addr_t *bufs,
	return total;
}

int hns_roce_get_umem_bufs(struct hns_roce_dev *hr_dev, dma_addr_t *bufs,
			   int buf_cnt, struct ib_umem *umem,
int hns_roce_get_umem_bufs(dma_addr_t *bufs, int buf_cnt, struct ib_umem *umem,
			   unsigned int page_shift)
{
	struct ib_block_iter biter;
+70 −37
Original line number Diff line number Diff line
@@ -658,10 +658,17 @@ static bool hns_roce_bond_lowerstate_event(struct hns_roce_dev *hr_dev,
	return true;
}

static inline bool hns_roce_bond_mode_is_supported(enum netdev_lag_tx_type tx_type)
static bool is_bond_setting_supported(struct netdev_lag_upper_info *bond_info)
{
	if (tx_type != NETDEV_LAG_TX_TYPE_ACTIVEBACKUP &&
	    tx_type != NETDEV_LAG_TX_TYPE_HASH)
	if (!bond_info)
		return false;

	if (bond_info->tx_type != NETDEV_LAG_TX_TYPE_ACTIVEBACKUP &&
	    bond_info->tx_type != NETDEV_LAG_TX_TYPE_HASH)
		return false;

	if (bond_info->tx_type == NETDEV_LAG_TX_TYPE_HASH &&
	    bond_info->hash_type > NETDEV_LAG_HASH_L23)
		return false;

	return true;
@@ -783,18 +790,71 @@ static struct hns_roce_bond_group *hns_roce_alloc_bond_grp(struct hns_roce_dev *
	return bond_grp;
}

static bool is_dev_bond_supported(struct hns_roce_dev *hr_dev, int bus_num)
{
	if (!hr_dev || !(hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_BOND))
		return false;

	if (hr_dev->is_vf || pci_num_vf(hr_dev->pci_dev) > 0)
		return false;

	if (bus_num != get_hr_bus_num(hr_dev))
		return false;

	return true;
}

static bool check_unlinking_bond_support(struct hns_roce_bond_group *bond_grp)
{
	struct net_device *net_dev;
	u8 slave_num = 0;

	rcu_read_lock();
	for_each_netdev_in_bond_rcu(bond_grp->upper_dev, net_dev) {
		if (get_netdev_bond_slave_id(net_dev, bond_grp) >= 0)
			slave_num++;
	}
	rcu_read_unlock();

	return (slave_num > 1);
}

static bool check_linking_bond_support(struct netdev_lag_upper_info *bond_info,
				       struct net_device *upper_dev,
				       int bus_num)
{
	struct hns_roce_dev *hr_dev;
	struct net_device *net_dev;
	u8 slave_num = 0;

	if (!is_bond_setting_supported(bond_info))
		return false;

	rcu_read_lock();
	for_each_netdev_in_bond_rcu(upper_dev, net_dev) {
		hr_dev = hns_roce_get_hrdev_by_netdev(net_dev);
		if (is_dev_bond_supported(hr_dev, bus_num)) {
			slave_num++;
		} else {
			rcu_read_unlock();
			return false;
		}
	}
	rcu_read_unlock();

	return (slave_num > 1 && slave_num <= ROCE_BOND_FUNC_MAX);
}

static enum bond_support_type
	check_bond_support(struct hns_roce_dev *hr_dev,
			   struct net_device **upper_dev,
			   struct netdev_notifier_changeupper_info *info)
{
	struct net_device *net_dev = get_hr_netdev(hr_dev, 0);
	struct netdev_lag_upper_info *bond_upper_info = NULL;
	struct hns_roce_bond_group *bond_grp;
	int bus_num = get_hr_bus_num(hr_dev);
	bool bond_grp_exist = false;
	bool support = true;
	u8 slave_num = 0;
	bool support;

	*upper_dev = info->upper_dev;
	bond_grp = hns_roce_get_bond_grp(net_dev, bus_num);
@@ -805,37 +865,10 @@ static enum bond_support_type
		return BOND_NOT_SUPPORT;

	if (info->linking)
		bond_upper_info = info->upper_info;

	if (bond_upper_info &&
	    !hns_roce_bond_mode_is_supported(bond_upper_info->tx_type))
		return BOND_NOT_SUPPORT;

	bus_num = -1;
	rcu_read_lock();
	for_each_netdev_in_bond_rcu(*upper_dev, net_dev) {
		if (!info->linking && bond_grp_exist) {
			if (get_netdev_bond_slave_id(net_dev, bond_grp) >= 0)
				slave_num++;
		} else {
			hr_dev = hns_roce_get_hrdev_by_netdev(net_dev);
			if (hr_dev) {
				slave_num++;
				if (bus_num == -1)
					bus_num = get_hr_bus_num(hr_dev);
				if (hr_dev->is_vf ||
				    pci_num_vf(hr_dev->pci_dev) > 0 ||
				    bus_num != get_hr_bus_num(hr_dev)) {
					support = false;
					break;
				}
			}
		}
	}
	rcu_read_unlock();

	if (slave_num <= 1 || slave_num > ROCE_BOND_FUNC_MAX)
		support = false;
		support = check_linking_bond_support(info->upper_info,
						     *upper_dev, bus_num);
	else
		support = check_unlinking_bond_support(bond_grp);
	if (support)
		return BOND_SUPPORT;

+5 −6
Original line number Diff line number Diff line
@@ -133,14 +133,12 @@ static int alloc_cqc(struct hns_roce_dev *hr_dev, struct hns_roce_cq *hr_cq)
	struct hns_roce_cq_table *cq_table = &hr_dev->cq_table;
	struct ib_device *ibdev = &hr_dev->ib_dev;
	u64 mtts[MTT_MIN_COUNT] = {};
	dma_addr_t dma_handle;
	int ret;

	ret = hns_roce_mtr_find(hr_dev, &hr_cq->mtr, 0, mtts, ARRAY_SIZE(mtts),
				&dma_handle);
	if (!ret) {
	ret = hns_roce_mtr_find(hr_dev, &hr_cq->mtr, 0, mtts, ARRAY_SIZE(mtts));
	if (ret) {
		ibdev_err(ibdev, "failed to find CQ mtr, ret = %d.\n", ret);
		return -EINVAL;
		return ret;
	}

	/* Get CQC memory HEM(Hardware Entry Memory) table */
@@ -157,7 +155,8 @@ static int alloc_cqc(struct hns_roce_dev *hr_dev, struct hns_roce_cq *hr_cq)
		goto err_put;
	}

	ret = hns_roce_create_cqc(hr_dev, hr_cq, mtts, dma_handle);
	ret = hns_roce_create_cqc(hr_dev, hr_cq, mtts,
				  hns_roce_get_mtr_ba(&hr_cq->mtr));
	if (ret)
		goto err_xa;

+5 −8
Original line number Diff line number Diff line
@@ -149,8 +149,7 @@ static void *alloc_dca_pages(struct hns_roce_dev *hr_dev, bool is_user,

}

static void init_dca_kmem_states(struct hns_roce_dev *hr_dev,
				 struct hns_dca_page_state *states, int count,
static void init_dca_kmem_states(struct hns_dca_page_state *states, int count,
				 struct hns_roce_buf *kmem)
{
	dma_addr_t cur_addr;
@@ -167,8 +166,7 @@ static void init_dca_kmem_states(struct hns_roce_dev *hr_dev,
	}
}

static void init_dca_umem_states(struct hns_roce_dev *hr_dev,
				 struct hns_dca_page_state *states, int count,
static void init_dca_umem_states(struct hns_dca_page_state *states, int count,
				 struct ib_umem *umem)
{
	struct ib_block_iter biter;
@@ -201,9 +199,9 @@ static struct hns_dca_page_state *alloc_dca_states(struct hns_roce_dev *hr_dev,
		return NULL;

	if (is_user)
		init_dca_umem_states(hr_dev, states, count, pages);
		init_dca_umem_states(states, count, pages);
	else
		init_dca_kmem_states(hr_dev, states, count, pages);
		init_dca_kmem_states(states, count, pages);

	return states;
}
@@ -1482,8 +1480,7 @@ static void teardown_kdca(struct hns_roce_dca_cfg *cfg)
	cfg->buf_list = NULL;
}

int hns_roce_enable_dca(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp,
			struct ib_udata *udata)
int hns_roce_enable_dca(struct hns_roce_qp *hr_qp, struct ib_udata *udata)
{
	struct hns_roce_dca_cfg *cfg = &hr_qp->dca_cfg;

+1 −2
Original line number Diff line number Diff line
@@ -61,8 +61,7 @@ void hns_roce_register_udca(struct hns_roce_dev *hr_dev, int max_qps,
void hns_roce_unregister_udca(struct hns_roce_dev *hr_dev,
			      struct hns_roce_ucontext *uctx);

int hns_roce_enable_dca(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp,
			struct ib_udata *udata);
int hns_roce_enable_dca(struct hns_roce_qp *hr_qp, struct ib_udata *udata);
void hns_roce_disable_dca(struct hns_roce_dev *hr_dev,
			  struct hns_roce_qp *hr_qp, struct ib_udata *udata);

Loading