net: hns3: fix for FEC configuration
authorJian Shen <shenjian15@huawei.com>
Fri, 24 May 2019 11:19:48 +0000 (19:19 +0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 26 May 2019 20:24:56 +0000 (13:24 -0700)
The FEC capbility may be changed with port speed changes. Driver
needs to read the active FEC mode, and update FEC capability
when port speed changes.

Fixes: 7e6ec9148a1d ("net: hns3: add support for FEC encoding control")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c

index 3ef5d09d1eee4add6af063bc409641efea02b954..a3fba7b8bcbb7ab066b6719fd5ebbf18d2f414bd 100644 (file)
@@ -2512,6 +2512,9 @@ static void hclge_update_link_status(struct hclge_dev *hdev)
 
 static void hclge_update_port_capability(struct hclge_mac *mac)
 {
+       /* update fec ability by speed */
+       hclge_convert_setting_fec(mac);
+
        /* firmware can not identify back plane type, the media type
         * read from configuration can help deal it
         */
@@ -2584,6 +2587,10 @@ static int hclge_get_sfp_info(struct hclge_dev *hdev, struct hclge_mac *mac)
                mac->speed_ability = le32_to_cpu(resp->speed_ability);
                mac->autoneg = resp->autoneg;
                mac->support_autoneg = resp->autoneg_ability;
+               if (!resp->active_fec)
+                       mac->fec_mode = 0;
+               else
+                       mac->fec_mode = BIT(resp->active_fec);
        } else {
                mac->speed_type = QUERY_SFP_SPEED;
        }