未验证 提交 8372e4f3 编写于 作者: O openeuler-ci-bot 提交者: Gitee

!1119 [openEuler-22.03-LTS-SP2] net: hns3: refactor hclge_mac_link_status_wait...

!1119 [openEuler-22.03-LTS-SP2] 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/1119 

Signed-off-by: Zheng Zengkai <zhengzengkai@huawei.com> 
...@@ -73,6 +73,8 @@ static void hclge_restore_hw_table(struct hclge_dev *hdev); ...@@ -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_promisc_mode(struct hclge_dev *hdev);
static void hclge_sync_fd_table(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 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; static struct hnae3_ae_algo ae_algo;
...@@ -7995,6 +7997,8 @@ static void hclge_enable_fd(struct hnae3_handle *handle, bool enable) ...@@ -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) int hclge_cfg_mac_mode(struct hclge_dev *hdev, bool enable)
{ {
#define HCLGE_LINK_STATUS_WAIT_CNT 3
struct hclge_desc desc; struct hclge_desc desc;
struct hclge_config_mac_mode_cmd *req = struct hclge_config_mac_mode_cmd *req =
(struct hclge_config_mac_mode_cmd *)desc.data; (struct hclge_config_mac_mode_cmd *)desc.data;
...@@ -8019,11 +8023,17 @@ int hclge_cfg_mac_mode(struct hclge_dev *hdev, bool enable) ...@@ -8019,11 +8023,17 @@ int hclge_cfg_mac_mode(struct hclge_dev *hdev, bool enable)
req->txrx_pad_fcs_loop_en = cpu_to_le32(loop_en); req->txrx_pad_fcs_loop_en = cpu_to_le32(loop_en);
ret = hclge_cmd_send(&hdev->hw, &desc, 1); ret = hclge_cmd_send(&hdev->hw, &desc, 1);
if (ret) if (ret) {
dev_err(&hdev->pdev->dev, "failed to %s mac, ret = %d.\n", dev_err(&hdev->pdev->dev, "failed to %s mac, ret = %d.\n",
enable ? "enable" : "disable", ret); enable ? "enable" : "disable", ret);
return 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, static int hclge_config_switch_param(struct hclge_dev *hdev, int vfid,
...@@ -8086,10 +8096,9 @@ static void hclge_phy_link_status_wait(struct hclge_dev *hdev, ...@@ -8086,10 +8096,9 @@ static void hclge_phy_link_status_wait(struct hclge_dev *hdev,
} while (++i < HCLGE_PHY_LINK_STATUS_NUM); } 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 link_status;
int i = 0; int i = 0;
int ret; int ret;
...@@ -8102,13 +8111,15 @@ static int hclge_mac_link_status_wait(struct hclge_dev *hdev, int link_ret) ...@@ -8102,13 +8111,15 @@ static int hclge_mac_link_status_wait(struct hclge_dev *hdev, int link_ret)
return 0; return 0;
msleep(HCLGE_LINK_STATUS_MS); msleep(HCLGE_LINK_STATUS_MS);
} while (++i < HCLGE_MAC_LINK_STATUS_NUM); } while (++i < wait_cnt);
return -EBUSY; return -EBUSY;
} }
static int hclge_mac_phy_link_status_wait(struct hclge_dev *hdev, bool en, static int hclge_mac_phy_link_status_wait(struct hclge_dev *hdev, bool en,
bool is_phy) bool is_phy)
{ {
#define HCLGE_MAC_LINK_STATUS_NUM 100
int link_ret; int link_ret;
link_ret = en ? HCLGE_LINK_STATUS_UP : HCLGE_LINK_STATUS_DOWN; 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, ...@@ -8116,7 +8127,8 @@ static int hclge_mac_phy_link_status_wait(struct hclge_dev *hdev, bool en,
if (is_phy) if (is_phy)
hclge_phy_link_status_wait(hdev, link_ret); 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) static int hclge_set_app_loopback(struct hclge_dev *hdev, bool en)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册