• Guangbin Huang's avatar
    net: hns3: fix phy can not link up when autoneg off and reset · ad0ecaef
    Guangbin Huang authored
    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: 1c124938 ("net: hns3: bugfix for hclge_mdio_write and hclge_mdio_read")
    Signed-off-by: default avatarGuangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ad0ecaef
hclge_mdio.c 7.53 KB