net: hns3: fix port setting handle for fibre port
authorGuangbin Huang <huangguangbin2@huawei.com>
Wed, 11 Sep 2019 02:40:36 +0000 (10:40 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Sep 2019 08:08:45 +0000 (09:08 +0100)
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 <huangguangbin2@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c

index f5a681d..680c350 100644 (file)
@@ -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);