linux-yocto/drivers/net/phy
Oleksij Rempel e3647c40be net: phy: microchip: limit 100M workaround to link-down events on LAN88xx
[ Upstream commit dd4360c0e8 ]

Restrict the 100Mbit forced-mode workaround to link-down transitions
only, to prevent repeated link reset cycles in certain configurations.

The workaround was originally introduced to improve signal reliability
when switching cables between long and short distances. It temporarily
forces the PHY into 10 Mbps before returning to 100 Mbps.

However, when used with autonegotiating link partners (e.g., Intel i350),
executing this workaround on every link change can confuse the partner
and cause constant renegotiation loops. This results in repeated link
down/up transitions and the PHY never reaching a stable state.

Limit the workaround to only run during the PHY_NOLINK state. This ensures
it is triggered only once per link drop, avoiding disruptive toggling
while still preserving its intended effect.

Note: I am not able to reproduce the original issue that this workaround
addresses. I can only confirm that 100 Mbit mode works correctly in my
test setup. Based on code inspection, I assume the workaround aims to
reset some internal state machine or signal block by toggling speeds.
However, a PHY reset is already performed earlier in the function via
phy_init_hw(), which may achieve a similar effect. Without a reproducer,
I conservatively keep the workaround but restrict its conditions.

Fixes: e57cf3639c ("net: lan78xx: fix accessing the LAN7800's internal phy specific registers from the MAC driver")
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20250709130753.3994461-3-o.rempel@pengutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-07-17 18:37:19 +02:00
..
aquantia net: phy: aquantia: remove usage of phy_set_max_speed 2024-10-03 16:16:03 -07:00
mscc net: phy: mscc: Stop clearing the the UDPv4 checksum for L2 frames 2025-06-19 15:31:56 +02:00
qcom net: phy: qcom: qca808x: Fix WoL issue by utilizing at8031_set_wol() 2025-07-17 18:37:04 +02:00
adin.c
adin1100.c
air_en8811h.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
amd.c
ax88796b_rust.rs rust: net::phy unified read/write API for C22 and C45 registers 2024-08-30 10:27:35 +01:00
ax88796b.c
bcm-cygnus.c
bcm-phy-lib.c net: phy: bcm-phy-lib: Implement BroadR-Reach link modes 2024-07-14 20:38:35 -07:00
bcm-phy-lib.h net: phy: bcm-phy-lib: Implement BroadR-Reach link modes 2024-07-14 20:38:35 -07:00
bcm-phy-ptp.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
bcm7xxx.c
bcm63xx.c
bcm87xx.c
bcm54140.c
bcm84881.c net: phy: bcm84881: Fix some error handling paths 2024-10-04 16:19:00 -07:00
broadcom.c net: phy: broadcom: Correct BCM5221 PHY model detection 2025-04-10 14:39:27 +02:00
cicada.c
cortina.c
davicom.c
dp83tc811.c
dp83td510.c phy: dp83td510: Utilize ALCD for cable length measurement when link is active 2024-08-26 09:33:58 -07:00
dp83tg720.c net: phy: dp83tg720: Add cable testing support 2024-08-16 10:16:26 -07:00
dp83640_reg.h
dp83640.c net: Add struct kernel_ethtool_ts_info 2024-07-15 08:02:26 -07:00
dp83822.c net: phy: dp83822: Fix reset pin definitions 2024-10-19 16:14:21 -05:00
dp83848.c net: phy: ti: add PHY_RST_AFTER_CLK_EN flag 2024-11-05 17:46:03 -08:00
dp83867.c
dp83869.c net: phy: dp83869: fix status reporting for 1000base-x autonegotiation 2024-12-09 10:40:59 +01:00
et1011c.c
fixed_phy.c
icplus.c
intel-xway.c
Kconfig net: phy: add Applied Micro QT2025 PHY driver 2024-08-30 10:27:35 +01:00
linkmode.c
lxt.c
Makefile net: phy: add Applied Micro QT2025 PHY driver 2024-08-30 10:27:35 +01:00
marvell-88q2xxx.c net: phy: marvell-88q2xxx: Fix temperature measurement with reset-gpios 2025-02-08 09:58:02 +01:00
marvell-88x2222.c net: phy: add helpers to handle sfp phy connect/disconnect 2024-08-23 13:04:34 +01:00
marvell.c net: phy: add helpers to handle sfp phy connect/disconnect 2024-08-23 13:04:34 +01:00
marvell10g.c net: phy: add helpers to handle sfp phy connect/disconnect 2024-08-23 13:04:34 +01:00
mdio_bus.c net/mdiobus: Fix potential out-of-bounds clause 45 read/write access 2025-06-19 15:32:29 +02:00
mdio_device.c
mdio_devres.c
mdio-boardinfo.c
mdio-boardinfo.h
mdio-open-alliance.h
mediatek-ge-soc.c
mediatek-ge.c
meson-gxl.c
micrel.c net: phy: micrel: Dynamically control external clock of KSZ PHY 2025-01-09 13:33:36 +01:00
microchip_t1.c net: phy: microchip_t1: Cable Diagnostics for lan887x 2024-09-11 20:21:07 -07:00
microchip_t1s.c net: phy: microchip_t1s: add c45 direct access in LAN865x internal PHY 2024-09-11 20:53:44 -07:00
microchip.c net: phy: microchip: limit 100M workaround to link-down events on LAN88xx 2025-07-17 18:37:19 +02:00
mii_timestamper.c
motorcomm.c net: phy: Add driver for Motorcomm yt8821 2.5G ethernet phy 2024-09-05 15:21:12 +02:00
mxl-gpy.c
national.c
ncn26000.c
nxp-c45-tja11xx-macsec.c
nxp-c45-tja11xx.c net: phy: nxp-c45-tja11xx: add match_phy_device to TJA1103/TJA1104 2025-05-29 11:02:31 +02:00
nxp-c45-tja11xx.h
nxp-cbtx.c
nxp-tja11xx.c
open_alliance_helpers.c phy: Add Open Alliance helpers for the PHY framework 2024-08-16 10:16:26 -07:00
open_alliance_helpers.h phy: Add Open Alliance helpers for the PHY framework 2024-08-16 10:16:26 -07:00
phy_device.c net: phy: clear phydev->devlink when the link is deleted 2025-06-19 15:31:54 +02:00
phy_led_triggers.c net: phy: leds: fix memory leak 2025-05-02 07:59:02 +02:00
phy_link_topology.c phy: fix xa_alloc_cyclic() error handling 2025-03-28 22:03:27 +01:00
phy-c45.c
phy-core.c net: phy: bcm54811: New link mode for BroadR-Reach 2024-07-14 20:38:34 -07:00
phy.c net: ethtool: plumb PHY stats to PHY drivers 2025-03-13 13:02:07 +01:00
phylink.c net: phylink: use pl->link_interface in phylink_expects_phy() 2025-05-29 11:02:29 +02:00
qsemi.c
qt2025.rs net: phy: qt2025: Fix warning: unused import DeviceId 2024-10-02 17:44:00 -07:00
realtek.c net: phy: realtek: add RTL8125D-internal PHY 2025-07-06 11:01:48 +02:00
rockchip.c
sfp-bus.c net: sfp: Add helper to return the SFP bus name 2024-08-23 13:04:34 +01:00
sfp.c net: sfp: add quirk for FS SFP-10GM-T copper SFP+ module 2025-04-20 10:15:19 +02:00
sfp.h
smsc.c net: phy: smsc: Fix link failure in forced mode with Auto-MDIX 2025-07-17 18:37:06 +02:00
spi_ks8995.c
ste10Xp.c
stubs.c
swphy.c
swphy.h
teranetics.c
uPD60620.c
vitesse.c net: phy: vitesse: implement MDI-X configuration in vsc73xx 2024-08-27 14:26:49 -07:00
xilinx_gmii2rgmii.c