net: hns: bug fix about restart auto-negotiation
authorDaode Huang <huangdaode@hisilicon.com>
Wed, 9 Nov 2016 18:13:49 +0000 (18:13 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 10 Nov 2016 16:45:37 +0000 (11:45 -0500)
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 <tianjinchuang1@huawei.com>
Signed-off-by: Daode Huang <huangdaode@hisilicon.com>
Reviewed-by: Yisen Zhuang <yisen.zhuang@huawei.com>
Reviewed-by: lipeng <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c

index 87d5c94b2810230b334ddef0501644cd291b8bbf..3ac2183dbd2119e0746d35510fcfc1e390ab6d9b 100644 (file)
@@ -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);
        }