From: Guangbin Huang <huangguangb...@huawei.com>

For hardware doesn't support use specified speed and duplex
to negotiate, it's unnecessary to check and modify the port
speed and duplex for fibre port when autoneg is on.

Fixes: 22f48e24a23d ("net: hns3: add autoneg and change speed support for fibre 
port")
Signed-off-by: Guangbin Huang <huangguangb...@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazh...@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c 
b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
index f5a681d..680c350 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
@@ -726,6 +726,12 @@ static int hns3_check_ksettings_param(const struct 
net_device *netdev,
        u8 duplex;
        int ret;
 
+       /* hw doesn't support use specified speed and duplex to negotiate,
+        * unnecessary to check them when autoneg on.
+        */
+       if (cmd->base.autoneg)
+               return 0;
+
        if (ops->get_ksettings_an_result) {
                ops->get_ksettings_an_result(handle, &autoneg, &speed, &duplex);
                if (cmd->base.autoneg == autoneg && cmd->base.speed == speed &&
@@ -787,6 +793,15 @@ static int hns3_set_link_ksettings(struct net_device 
*netdev,
                        return ret;
        }
 
+       /* hw doesn't support use specified speed and duplex to negotiate,
+        * ignore them when autoneg on.
+        */
+       if (cmd->base.autoneg) {
+               netdev_info(netdev,
+                           "autoneg is on, ignore the speed and duplex\n");
+               return 0;
+       }
+
        if (ops->cfg_mac_speed_dup_h)
                ret = ops->cfg_mac_speed_dup_h(handle, cmd->base.speed,
                                               cmd->base.duplex);
-- 
2.7.4

Reply via email to