twx-linux/drivers/net/phy
Fiona Klute 689d5be94f net: phy: microchip: force IRQ polling mode for lan88xx
commit 30a41ed32d3088cd0d682a13d7f30b23baed7e93 upstream.

With lan88xx based devices the lan78xx driver can get stuck in an
interrupt loop while bringing the device up, flooding the kernel log
with messages like the following:

lan78xx 2-3:1.0 enp1s0u3: kevent 4 may have been dropped

Removing interrupt support from the lan88xx PHY driver forces the
driver to use polling instead, which avoids the problem.

The issue has been observed with Raspberry Pi devices at least since
4.14 (see [1], bug report for their downstream kernel), as well as
with Nvidia devices [2] in 2020, where disabling interrupts was the
vendor-suggested workaround (together with the claim that phylib
changes in 4.9 made the interrupt handling in lan78xx incompatible).

Iperf reports well over 900Mbits/sec per direction with client in
--dualtest mode, so there does not seem to be a significant impact on
throughput (lan88xx device connected via switch to the peer).

[1] https://github.com/raspberrypi/linux/issues/2447
[2] https://forums.developer.nvidia.com/t/jetson-xavier-and-lan7800-problem/142134/11

Link: https://lore.kernel.org/0901d90d-3f20-4a10-b680-9c978e04ddda@lunn.ch
Fixes: 792aec47d59d ("add microchip LAN88xx phy driver")
Signed-off-by: Fiona Klute <fiona.klute@gmx.de>
Cc: kernel-list@raspberrypi.com
Cc: stable@vger.kernel.org
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20250416102413.30654-1-fiona.klute@gmx.de
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-05-02 07:50:46 +02:00
..
mscc net: phy: mscc: macsec: reject PN update requests 2023-10-10 10:30:31 +02:00
adin1100.c
adin.c
amd.c
aquantia_hwmon.c
aquantia_main.c
aquantia.h
at803x.c net: phy: at803x: fix passing the wrong reference for config_intr 2024-02-05 20:14:22 +00:00
ax88796b.c
bcm7xxx.c net: phy: bcm7xxx: Add missing 16nm EPHY statistics 2023-10-18 18:13:13 -07:00
bcm63xx.c
bcm87xx.c
bcm54140.c
bcm84881.c net: phy: bcm84881: Fix some error handling paths 2024-10-17 15:24:24 +02:00
bcm-cygnus.c
bcm-phy-lib.c
bcm-phy-lib.h
bcm-phy-ptp.c
broadcom.c net: phy: broadcom: stub c45 read/write for 54810 2023-08-15 18:53:43 -07:00
cicada.c
cortina.c
davicom.c
dp83tc811.c
dp83td510.c
dp83640_reg.h
dp83640.c dp83640: Use list_for_each_entry() helper 2023-08-23 09:39:15 +01:00
dp83822.c net: phy: dp83822: Fix reset pin definitions 2024-11-01 01:58:33 +01:00
dp83848.c net: phy: ti: add PHY_RST_AFTER_CLK_EN flag 2024-11-14 13:19:31 +01:00
dp83867.c
dp83869.c net: phy: dp83869: fix memory corruption when enabling fiber 2024-10-17 15:24:23 +02:00
et1011c.c
fixed_phy.c
icplus.c
intel-xway.c
Kconfig net: phy: nxp-c45-tja11xx: add TJA1120 support 2023-08-01 21:06:25 -07:00
linkmode.c
lxt.c
Makefile net: phy: provide phylib stubs for hardware timestamping operations 2023-08-02 19:11:06 -07:00
marvell10g.c net: phy: marvell10g: fix 88x3310 power up 2023-07-23 11:47:07 +01:00
marvell-88q2xxx.c net: phy: marvell-88q2xxx: add driver for the Marvell 88Q2110 PHY 2023-07-20 12:24:06 +02:00
marvell-88x2222.c net: phy/pcs: Explicitly include correct DT includes 2023-07-26 21:55:37 -07:00
marvell.c net: phy: marvell: Add support for offloading LED blinking 2023-08-10 17:35:00 -07:00
mdio_bus.c net: mdio_bus: validate "addr" for mdiobus_is_registered_device() 2023-07-25 20:07:57 -07:00
mdio_device.c
mdio_devres.c
mdio-boardinfo.c
mdio-boardinfo.h
mdio-open-alliance.h
mediatek-ge-soc.c net: phy: mediatek-ge-soc: follow netdev LED trigger semantics 2024-05-02 16:32:37 +02:00
mediatek-ge.c
meson-gxl.c
micrel.c net: phy: micrel: Fix the KSZ9131 MDI-X status issue 2024-08-11 12:47:21 +02:00
microchip_t1.c net: phy: microchip: lan87xx: reinit PHY after cable test 2024-07-18 13:21:12 +02:00
microchip_t1s.c
microchip.c net: phy: microchip: force IRQ polling mode for lan88xx 2025-05-02 07:50:46 +02:00
mii_timestamper.c
motorcomm.c net: phy: motorcomm: Add pad drive strength cfg support 2023-07-24 10:36:45 +01:00
mxl-gpy.c net: phy: mxl-gpy: Remove interrupt mask clearing from config_init 2024-06-27 13:49:07 +02:00
national.c
ncn26000.c
nxp-c45-tja11xx.c net: phy: c45-tjaxx: add delay between MDIO write and read in soft_reset 2025-02-17 09:40:39 +01:00
nxp-cbtx.c
nxp-tja11xx.c
phy_device.c net: phy: Remove LED entry from LEDs list on unregister 2024-10-17 15:24:35 +02:00
phy_led_triggers.c net: phy: leds: fix memory leak 2025-05-02 07:50:43 +02:00
phy-c45.c net: phy: c45: detect the BASE-T1 speed from the ability register 2023-07-20 12:24:06 +02:00
phy-core.c net: phy: Introduce PSGMII PHY interface mode 2023-08-14 08:12:53 +01:00
phy.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-08-24 10:51:39 -07:00
phylink.c net: phylink: initialize carrier state at creation 2023-11-28 17:20:11 +00:00
qsemi.c
realtek.c net: phy: realtek: add support for RTL8366S Gigabit PHY 2024-08-11 12:47:19 +02:00
rockchip.c
sfp-bus.c net: sfp-bus: fix SFP mode detect from bitrate 2024-06-16 13:47:30 +02:00
sfp.c net: sfp: add quirk for 2.5G OEM BX SFP 2025-04-25 10:45:15 +02:00
sfp.h net: sfp: Remove unused function declaration sfp_link_configure() 2023-08-07 08:53:55 +01:00
smsc.c net: phy: smsc: add WoL support to LAN8740/LAN8742 PHYs 2023-07-26 21:24:40 -07:00
spi_ks8995.c
ste10Xp.c
stubs.c net: phy: provide phylib stubs for hardware timestamping operations 2023-08-02 19:11:06 -07:00
swphy.c
swphy.h
teranetics.c
uPD60620.c
vitesse.c net: phy: vitesse: repair vsc73xx autonegotiation 2024-09-18 19:24:05 +02:00
xilinx_gmii2rgmii.c