Skip to content

Commit

Permalink
net: hns3: Fix for phy not link up problem after resetting
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Yunsheng Lin authored and David S. Miller committed Jun 1, 2018
1 parent cd8c5c2 commit 9617f66
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand Down

0 comments on commit 9617f66

Please sign in to comment.