]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: hns3: fix for FEC configuration
authorJian Shen <shenjian15@huawei.com>
Fri, 24 May 2019 11:19:48 +0000 (19:19 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 26 Jul 2019 07:10:16 +0000 (09:10 +0200)
[ Upstream commit f438bfe9d4fe2e491505abfbf04d7c506e00d146 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c

index d3b1f8cb11558148bda430ef0453047b499a9836..4d9bcad26f06bf21b15638a912904393ceb2f874 100644 (file)
@@ -2508,6 +2508,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
         */
@@ -2580,6 +2583,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;
        }