Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9617f668 authored by Yunsheng Lin's avatar Yunsheng Lin Committed by David S. Miller
Browse files

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: default avatarYunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: default avatarPeng Li <lipeng321@huawei.com>
Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cd8c5c26
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -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);