net: ethernet: stmicro: Exit loopback when dwmac_rk_init failed

This patch fixed the following issue:
[  106.688843] Call trace:
[  106.689091]  dwmac4_release_tx_desc+0x0/0x10
[  106.689495]  dwmac_rk_loopback_with_identify+0x48/0x54
[  106.689971]  dwmac_rk_loopback_run.constprop.10+0x55c/0xcf8
[  106.690482]  phy_lb_scan_store+0xdc/0xe0
[  106.690848]  dev_attr_store+0x18/0x28
[  106.691191]  sysfs_kf_write+0x48/0x58
[  106.691531]  kernfs_fop_write+0xf4/0x220
[  106.691896]  __vfs_write+0x34/0x158
[  106.692219]  vfs_write+0xb0/0x1d0
[  106.692530]  ksys_write+0x64/0xe0
[  106.692842]  __arm64_sys_write+0x14/0x20

Signed-off-by: David Wu <david.wu@rock-chips.com>
Change-Id: I7d36105d20cc94275842f07c9d7aaa49cc6daa06
This commit is contained in:
David Wu
2021-03-22 17:27:49 +08:00
committed by Tao Huang
parent 55fab09816
commit 3371773b5c

View File

@@ -1216,7 +1216,9 @@ static int dwmac_rk_loopback_run(struct stmmac_priv *priv,
/* wait for phy and controller ready */
usleep_range(100000, 200000);
dwmac_rk_init(ndev, lb_priv);
ret = dwmac_rk_init(ndev, lb_priv);
if (ret)
goto exit_init;
dwmac_rk_set_loopback(priv, lb_priv->type, lb_priv->speed, true);
if (lb_priv->scan) {
@@ -1240,6 +1242,7 @@ out:
dwmac_rk_release(ndev, lb_priv);
dwmac_rk_set_loopback(priv, lb_priv->type, lb_priv->speed, false);
exit_init:
if (ndev_up)
ndev->netdev_ops->ndo_open(ndev);