From: Daode Huang <[email protected]>

When set auto-negotiation off and duplex half, if run "ethtool -r ethX"
on port with phy, then the port will be failed to work. It should
forbid to start auto-negotiation when auto-negotiate is off. This
patch add the limited condition.

Reported-by: Jinchuang Tian <[email protected]>
Signed-off-by: Daode Huang <[email protected]>
Reviewed-by: Yisen Zhuang <[email protected]>
Reviewed-by: lipeng <[email protected]>
Signed-off-by: Salil Mehta <[email protected]>
---
 drivers/net/ethernet/hisilicon/hns/hns_ethtool.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c 
b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
index 87d5c94..3ac2183 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
@@ -1178,7 +1178,8 @@ static int hns_nic_nway_reset(struct net_device *netdev)
        struct phy_device *phy = netdev->phydev;
 
        if (netif_running(netdev)) {
-               if (phy)
+               /* if autoneg is disabled, don't restart auto-negotiation */
+               if (phy && phy->autoneg == AUTONEG_ENABLE)
                        ret = genphy_restart_aneg(phy);
        }
 
-- 
1.7.9.5


Reply via email to