提交 aa6b5c1c 编写于 作者: Y Yonglong Liu 提交者: Xie XiuQi

net: hns: All ports can not work when insmod hns ko after rmmod

When system panic and kdump starts the second kernel, net port can not work.

There are another two test cases have the similar reason:
1. Remove the 4 modules:hns_enet_drv/hns_dsaf/hnae/hns_mdio,
and install them again, must use "ifconfig down/ifconfig up"
command pair to bring port to work.

This patch calls phy_stop function when init phy to fix this bug.

2. Remove the 2 modules:hns_enet_drv/hns_dsaf, and install them again,
all ports can not use anymore, because of the phy devices register
failed(phy devices already exists).

Phy devices are registered when hns_dsaf installed, this patch
removes them when hns_dsaf removed.

The two cases are sometimes related, fixing the second case also requires
fixing the first case, so fix them together.

Feature or Bugfix:Bugfix
Signed-off-by: NYonglong Liu <liuyonglong@huawei.com>
Reviewed-by: Nhuangdaode <huangdaode@hisilicon.com>
上级 e25cfedd
......@@ -778,6 +778,17 @@ static int hns_mac_register_phy(struct hns_mac_cb *mac_cb)
return rc;
}
static void hns_mac_remove_phydev(struct hns_mac_cb *mac_cb)
{
if (!to_acpi_device_node(mac_cb->fw_port) || !mac_cb->phy_dev)
return;
phy_device_remove(mac_cb->phy_dev);
phy_device_free(mac_cb->phy_dev);
mac_cb->phy_dev = NULL;
}
#define MAC_MEDIA_TYPE_MAX_LEN 16
static const struct {
......@@ -1117,7 +1128,11 @@ void hns_mac_uninit(struct dsaf_device *dsaf_dev)
int max_port_num = hns_mac_get_max_port_num(dsaf_dev);
for (i = 0; i < max_port_num; i++) {
if (!dsaf_dev->mac_cb[i])
continue;
dsaf_dev->misc_op->cpld_reset_led(dsaf_dev->mac_cb[i]);
hns_mac_remove_phydev(dsaf_dev->mac_cb[i]);
dsaf_dev->mac_cb[i] = NULL;
}
}
......
......@@ -1186,6 +1186,9 @@ int hns_nic_init_phy(struct net_device *ndev, struct hnae_handle *h)
if (h->phy_if == PHY_INTERFACE_MODE_XGMII)
phy_dev->autoneg = false;
if (h->phy_if == PHY_INTERFACE_MODE_SGMII)
phy_stop(phy_dev);
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册