67 lines
2.6 KiB
Diff
67 lines
2.6 KiB
Diff
From 1557f33214d6f7b9d345a32a43646da0ce3c5fe3 Mon Sep 17 00:00:00 2001
|
|
From: Guangbin Huang <huangguangbin2@huawei.com>
|
|
Date: Mon, 14 Nov 2022 16:20:48 +0800
|
|
Subject: [PATCH 183/283] net: hns3: fix setting incorrect phy link ksettings
|
|
for firmware in resetting process
|
|
|
|
mainline inclusion
|
|
from mainline-v6.1-rc6
|
|
commit 510d7b6ae842e59ee00d57e5f07ac15131b6d899
|
|
category: bugfix
|
|
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I8EN3D
|
|
CVE: NA
|
|
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=510d7b6ae842e59ee00d57e5f07ac15131b6d899
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Currently, if driver is in phy-imp(phy controlled by imp firmware) mode, as
|
|
driver did not update phy link ksettings after initialization process or
|
|
not update advertising when getting phy link ksettings from firmware, it
|
|
may set incorrect phy link ksettings for firmware in resetting process.
|
|
So fix it.
|
|
|
|
Fixes: f5f2b3e4dcc0 ("net: hns3: add support for imp-controlled PHYs")
|
|
Fixes: c5ef83cbb1e9 ("net: hns3: fix for phy_addr error in hclge_mac_mdio_config")
|
|
Fixes: 2312e050f42b ("net: hns3: Fix for deadlock problem occurring when unregistering ae_algo")
|
|
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
|
|
Signed-off-by: Hao Lan <lanhao@huawei.com>
|
|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|
Signed-off-by: Jiantao Xiao <xiaojiantao1@h-partners.com>
|
|
Signed-off-by: Xiaodong Li <lixiaodong67@huawei.com>
|
|
---
|
|
.../net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 10 +++++++---
|
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
|
|
index aeb776403ff0..62b60e559137 100644
|
|
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
|
|
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
|
|
@@ -3327,6 +3327,7 @@ static int hclge_update_tp_port_info(struct hclge_dev *hdev)
|
|
hdev->hw.mac.autoneg = cmd.base.autoneg;
|
|
hdev->hw.mac.speed = cmd.base.speed;
|
|
hdev->hw.mac.duplex = cmd.base.duplex;
|
|
+ linkmode_copy(hdev->hw.mac.advertising, cmd.link_modes.advertising);
|
|
|
|
return 0;
|
|
}
|
|
@@ -11026,9 +11027,12 @@ static int hclge_init_ae_dev(struct hnae3_ae_dev *ae_dev)
|
|
if (ret)
|
|
goto err_msi_irq_uninit;
|
|
|
|
- if (hdev->hw.mac.media_type == HNAE3_MEDIA_TYPE_COPPER &&
|
|
- !hnae3_dev_phy_imp_supported(hdev)) {
|
|
- ret = hclge_mac_mdio_config(hdev);
|
|
+ if (hdev->hw.mac.media_type == HNAE3_MEDIA_TYPE_COPPER) {
|
|
+ if (hnae3_dev_phy_imp_supported(hdev))
|
|
+ ret = hclge_update_tp_port_info(hdev);
|
|
+ else
|
|
+ ret = hclge_mac_mdio_config(hdev);
|
|
+
|
|
if (ret)
|
|
goto err_msi_irq_uninit;
|
|
}
|
|
--
|
|
2.34.1
|
|
|