Unverified Commit 73539a5e authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!1113 net: hns3: refactor hclge_mac_link_status_wait and add wait until mac link down

Merge Pull Request from: @svishen 
 
This pull Requests refactor hclge_mac_link_status_wait and add wait until mac link down

issue:
https://gitee.com/openeuler/kernel/issues/I7D6IP 
 
Link:https://gitee.com/openeuler/kernel/pulls/1113

 

Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parents c77f4455 072e8c4b
Loading
Loading
Loading
Loading
+19 −7
Original line number Diff line number Diff line
@@ -73,6 +73,8 @@ static void hclge_restore_hw_table(struct hclge_dev *hdev);
static void hclge_sync_promisc_mode(struct hclge_dev *hdev);
static void hclge_sync_fd_table(struct hclge_dev *hdev);
static void hclge_reset_end(struct hnae3_handle *handle, bool done);
static int hclge_mac_link_status_wait(struct hclge_dev *hdev, int link_ret,
				      int wait_cnt);

static struct hnae3_ae_algo ae_algo;

@@ -7995,6 +7997,8 @@ static void hclge_enable_fd(struct hnae3_handle *handle, bool enable)

int hclge_cfg_mac_mode(struct hclge_dev *hdev, bool enable)
{
#define HCLGE_LINK_STATUS_WAIT_CNT  3

	struct hclge_desc desc;
	struct hclge_config_mac_mode_cmd *req =
		(struct hclge_config_mac_mode_cmd *)desc.data;
@@ -8019,13 +8023,19 @@ int hclge_cfg_mac_mode(struct hclge_dev *hdev, bool enable)
	req->txrx_pad_fcs_loop_en = cpu_to_le32(loop_en);

	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
	if (ret)
	if (ret) {
		dev_err(&hdev->pdev->dev, "failed to %s mac, ret = %d.\n",
			enable ? "enable" : "disable", ret);

		return ret;
	}

	if (!enable)
		hclge_mac_link_status_wait(hdev, HCLGE_LINK_STATUS_DOWN,
					   HCLGE_LINK_STATUS_WAIT_CNT);

	return 0;
}

static int hclge_config_switch_param(struct hclge_dev *hdev, int vfid,
				     u8 switch_param, u8 param_mask)
{
@@ -8086,10 +8096,9 @@ static void hclge_phy_link_status_wait(struct hclge_dev *hdev,
	} while (++i < HCLGE_PHY_LINK_STATUS_NUM);
}

static int hclge_mac_link_status_wait(struct hclge_dev *hdev, int link_ret)
static int hclge_mac_link_status_wait(struct hclge_dev *hdev, int link_ret,
				      int wait_cnt)
{
#define HCLGE_MAC_LINK_STATUS_NUM  100

	int link_status;
	int i = 0;
	int ret;
@@ -8102,13 +8111,15 @@ static int hclge_mac_link_status_wait(struct hclge_dev *hdev, int link_ret)
			return 0;

		msleep(HCLGE_LINK_STATUS_MS);
	} while (++i < HCLGE_MAC_LINK_STATUS_NUM);
	} while (++i < wait_cnt);
	return -EBUSY;
}

static int hclge_mac_phy_link_status_wait(struct hclge_dev *hdev, bool en,
					  bool is_phy)
{
#define HCLGE_MAC_LINK_STATUS_NUM  100

	int link_ret;

	link_ret = en ? HCLGE_LINK_STATUS_UP : HCLGE_LINK_STATUS_DOWN;
@@ -8116,7 +8127,8 @@ static int hclge_mac_phy_link_status_wait(struct hclge_dev *hdev, bool en,
	if (is_phy)
		hclge_phy_link_status_wait(hdev, link_ret);

	return hclge_mac_link_status_wait(hdev, link_ret);
	return hclge_mac_link_status_wait(hdev, link_ret,
					  HCLGE_MAC_LINK_STATUS_NUM);
}

static int hclge_set_app_loopback(struct hclge_dev *hdev, bool en)