Skip to content

Commit 7fe5b91

Browse files
Lin Yun Shengdavem330
authored andcommitted
net/hns:bugfix of ethtool -t phy self_test
This patch fixes the phy loopback self_test failed issue. when Marvell Phy Module is loaded, it will powerdown fiber when doing phy loopback self test, which cause phy loopback self_test fail. Signed-off-by: Lin Yun Sheng <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 9745e36 commit 7fe5b91

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

drivers/net/ethernet/hisilicon/hns/hns_ethtool.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,9 +288,15 @@ static int hns_nic_config_phy_loopback(struct phy_device *phy_dev, u8 en)
288288

289289
/* Force 1000M Link, Default is 0x0200 */
290290
phy_write(phy_dev, 7, 0x20C);
291-
phy_write(phy_dev, HNS_PHY_PAGE_REG, 0);
292291

293-
/* Enable PHY loop-back */
292+
/* Powerup Fiber */
293+
phy_write(phy_dev, HNS_PHY_PAGE_REG, 1);
294+
val = phy_read(phy_dev, COPPER_CONTROL_REG);
295+
val &= ~PHY_POWER_DOWN;
296+
phy_write(phy_dev, COPPER_CONTROL_REG, val);
297+
298+
/* Enable Phy Loopback */
299+
phy_write(phy_dev, HNS_PHY_PAGE_REG, 0);
294300
val = phy_read(phy_dev, COPPER_CONTROL_REG);
295301
val |= PHY_LOOP_BACK;
296302
val &= ~PHY_POWER_DOWN;
@@ -299,6 +305,12 @@ static int hns_nic_config_phy_loopback(struct phy_device *phy_dev, u8 en)
299305
phy_write(phy_dev, HNS_PHY_PAGE_REG, 0xFA);
300306
phy_write(phy_dev, 1, 0x400);
301307
phy_write(phy_dev, 7, 0x200);
308+
309+
phy_write(phy_dev, HNS_PHY_PAGE_REG, 1);
310+
val = phy_read(phy_dev, COPPER_CONTROL_REG);
311+
val |= PHY_POWER_DOWN;
312+
phy_write(phy_dev, COPPER_CONTROL_REG, val);
313+
302314
phy_write(phy_dev, HNS_PHY_PAGE_REG, 0);
303315
phy_write(phy_dev, 9, 0xF00);
304316

0 commit comments

Comments
 (0)