From: Yufeng Mo <moyuf...@huawei.com>

The 802.3 specification does not specify the behavior of
auto-negotiation off with 1000M in PHY. Therefore, some PHY
compatibility issues occur. This patch forbids the setting of
this unreasonable mode by ethtool in driver.

Signed-off-by: Yufeng Mo <moyuf...@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazh...@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c 
b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
index 1a105f2..6b1545f 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
@@ -773,8 +773,13 @@ static int hns3_set_link_ksettings(struct net_device 
*netdev,
                  cmd->base.autoneg, cmd->base.speed, cmd->base.duplex);
 
        /* Only support ksettings_set for netdev with phy attached for now */
-       if (netdev->phydev)
+       if (netdev->phydev) {
+               if (cmd->base.speed == SPEED_1000 &&
+                   cmd->base.autoneg == AUTONEG_DISABLE)
+                       return -EINVAL;
+
                return phy_ethtool_ksettings_set(netdev->phydev, cmd);
+       }
 
        if (handle->pdev->revision == 0x20)
                return -EOPNOTSUPP;
-- 
2.7.4

Reply via email to