提交 224c5988 编写于 作者: H Huazhong Tan 提交者: Xie XiuQi

net: hns3: remove update reset level when reset fail

driver inclusion
category: bugfix
bugzilla: NA
CVE: NA

Currently, hclge_reset_err_handle() will assert a global reset
when the failing count is smaller than MAX_RESET_FAIL_CNT, which
will affect other running functions.

So this patch removes this upgrading, and uses re-scheduling reset
task to do it.

Feature or Bugfix:Bugfix
Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
Reviewed-by: Nlinyunsheng <linyunsheng@huawei.com>
Reviewed-by: NYunsheng Lin <linyunsheng@huawei.com>
Reviewed-by: NYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 a8d940d8
...@@ -3413,7 +3413,7 @@ static int hclge_reset_prepare_wait(struct hclge_dev *hdev) ...@@ -3413,7 +3413,7 @@ static int hclge_reset_prepare_wait(struct hclge_dev *hdev)
return ret; return ret;
} }
static bool hclge_reset_err_handle(struct hclge_dev *hdev, bool is_timeout) static bool hclge_reset_err_handle(struct hclge_dev *hdev)
{ {
struct hnae3_handle *handle = handle = &hdev->vport[0].nic; struct hnae3_handle *handle = handle = &hdev->vport[0].nic;
...@@ -3430,21 +3430,11 @@ static bool hclge_reset_err_handle(struct hclge_dev *hdev, bool is_timeout) ...@@ -3430,21 +3430,11 @@ static bool hclge_reset_err_handle(struct hclge_dev *hdev, bool is_timeout)
return false; return false;
} else if (hdev->reset_fail_cnt < HCLGE_RESET_MAX_FAIL_CNT) { } else if (hdev->reset_fail_cnt < HCLGE_RESET_MAX_FAIL_CNT) {
hdev->reset_fail_cnt++; hdev->reset_fail_cnt++;
set_bit(hdev->reset_type, &hdev->reset_pending);
if (hdev->reset_type == HNAE3_IMP_RESET || is_timeout) { dev_info(&hdev->pdev->dev,
set_bit(hdev->reset_type, &hdev->reset_pending); "re-schedule reset task(%d)\n",
dev_info(&hdev->pdev->dev, hdev->reset_fail_cnt);
"re-schedule to wait for hw reset done\n"); return true;
return true;
}
dev_info(&hdev->pdev->dev, "Upgrade reset level\n");
hclge_clear_reset_cause(hdev);
set_bit(HNAE3_GLOBAL_RESET, &hdev->default_reset_request);
mod_timer(&hdev->reset_timer,
jiffies + HCLGE_RESET_INTERVAL);
return false;
} }
hclge_clear_reset_cause(hdev); hclge_clear_reset_cause(hdev);
...@@ -3514,7 +3504,6 @@ static void hclge_reset(struct hclge_dev *hdev) ...@@ -3514,7 +3504,6 @@ static void hclge_reset(struct hclge_dev *hdev)
{ {
struct hnae3_handle *handle = &hdev->vport[0].nic; struct hnae3_handle *handle = &hdev->vport[0].nic;
struct hnae3_ae_dev *ae_dev = pci_get_drvdata(hdev->pdev); struct hnae3_ae_dev *ae_dev = pci_get_drvdata(hdev->pdev);
bool is_timeout = false;
int ret; int ret;
/* Initialize ae_dev reset status as well, in case enet layer wants to /* Initialize ae_dev reset status as well, in case enet layer wants to
...@@ -3541,10 +3530,8 @@ static void hclge_reset(struct hclge_dev *hdev) ...@@ -3541,10 +3530,8 @@ static void hclge_reset(struct hclge_dev *hdev)
if (ret) if (ret)
goto err_reset; goto err_reset;
if (hclge_reset_wait(hdev)) { if (hclge_reset_wait(hdev))
is_timeout = true;
goto err_reset; goto err_reset;
}
hdev->rst_stats.reset_cnt++; hdev->rst_stats.reset_cnt++;
...@@ -3599,7 +3586,7 @@ static void hclge_reset(struct hclge_dev *hdev) ...@@ -3599,7 +3586,7 @@ static void hclge_reset(struct hclge_dev *hdev)
err_reset_lock: err_reset_lock:
rtnl_unlock(); rtnl_unlock();
err_reset: err_reset:
if (hclge_reset_err_handle(hdev, is_timeout)) if (hclge_reset_err_handle(hdev))
hclge_reset_task_schedule(hdev); hclge_reset_task_schedule(hdev);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册