net: hns3: Fix for phy not link up problem after resetting

When resetting, phy_state_machine may be accessing the phy through
firmware if the phy is not stopped or disconnected, which will
cause firemware timeout problem because the firmware is busy
processing the reset request.

This patch fixes it by disabling the phy when resetting.

Fixes: b940aeae0ed6 ("net: hns3: never send command queue message to IMP when reset")
Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Yunsheng Lin 2018-06-01 17:52:07 +01:00 committed by David S. Miller
parent cd8c5c269b
commit 9617f66867

View File

@ -3761,9 +3761,6 @@ static int hclge_ae_start(struct hnae3_handle *handle)
/* reset tqp stats */
hclge_reset_tqp_stats(handle);
if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state))
return 0;
ret = hclge_mac_start_phy(hdev);
if (ret)
return ret;
@ -3781,8 +3778,10 @@ static void hclge_ae_stop(struct hnae3_handle *handle)
cancel_work_sync(&hdev->service_task);
clear_bit(HCLGE_STATE_SERVICE_SCHED, &hdev->state);
if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state))
if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state)) {
hclge_mac_stop_phy(hdev);
return;
}
for (i = 0; i < vport->alloc_tqps; i++)
hclge_tqp_enable(hdev, i, 0, false);