]> git.baikalelectronics.ru Git - kernel.git/commit
net: hns3: fix phy can not link up when autoneg off and reset
authorGuangbin Huang <huangguangbin2@huawei.com>
Sat, 26 Mar 2022 09:51:05 +0000 (17:51 +0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 26 Mar 2022 16:16:49 +0000 (09:16 -0700)
commitab416c061b46987bb917afd839139e85418e97d6
tree379084c03ad5ac39bac6b45e11604cbd973e151a
parentf945c6e940515f7c4967f52bcd635dc5d03e1ca0
net: hns3: fix phy can not link up when autoneg off and reset

Currently, function hclge_mdio_read() will return 0 if during reset(the
cmd state will be set to disable).

If use general phy driver, the phy_state_machine() will update phy speed
every second in function genphy_read_status_fixed() when PHY is set to
autoneg off, no matter of link down or link up.

If phy driver happens to read BMCR register during reset, phy speed will
be updated to 10Mpbs as BMCR register value is 0. So it may call phy can
not link up if previous speed is not 10Mpbs.

To fix this problem, function hclge_mdio_read() should return -EBUSY if
the cmd state is disable. So does function hclge_mdio_write().

Fixes: b4a4dbb0536c ("net: hns3: bugfix for hclge_mdio_write and hclge_mdio_read")
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c