linux/drivers/net
Fiona Klute 689d5be94f net: phy: microchip: force IRQ polling mode for lan88xx
commit 30a41ed32d 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: 792aec47d5 ("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>
History 2025-05-02 07:50:46 +02:00
..
appletalk net: appletalk: remove Apple/Farallon LocalTalk PC support 2022-05-11 13:08:38 +01:00
arcnet arcnet: Add NULL check in com20020pci_probe() 2025-04-10 14:37:40 +02:00
bonding bonding: fix incorrect MAC address setting to receive NS messages 2025-03-22 12:50:39 -07:00
caif caif_virtio: fix wrong pointer check in cfv_probe() 2025-03-13 12:58:29 +01:00
can can: flexcan: disable transceiver during system PM 2025-03-28 21:59:54 +01:00
dsa net: dsa: mt7530: sync driver-specific behavior of MT7531 variants 2025-05-02 07:50:44 +02:00
ethernet pds_core: make wait_context part of q_info 2025-05-02 07:50:44 +02:00
fddi net: fddi: skfp: rmt: Clean up some inconsistent indenting 2023-04-11 12:46:26 +02:00
fjes fjes: fix memleaks in fjes_hw_setup 2024-01-31 16:19:05 -08:00
hamradio tty: use u8 for flags 2023-08-11 21:12:45 +02:00
hippi net: hippi: Add missing pci_disable_device() in rr_init_one() 2022-09-26 13:22:39 -07:00
hyperv hv_netvsc: Fix VF namespace also in synthetic NIC NETDEV_REGISTER event 2024-11-01 01:58:33 +01:00
ieee802154 ieee802154: ca8210: Add missing check for kfifo_alloc() in ca8210_probe() 2025-01-17 13:36:11 +01:00
ipa net: ipa: Enable checksum for IPA_ENDPOINT_AP_MODEM_{RX,TX} for v4.7 2025-03-13 12:58:31 +01:00
ipvlan ipvlan: ensure network headers are in skb linear part 2025-03-07 16:45:40 +01:00
mctp net: mctp i2c: Copy headers if cloned 2025-03-22 12:50:38 -07:00
mdio net: mdiobus: fix an OF node reference leak 2024-12-27 13:58:49 +01:00
netdevsim netdevsim: print human readable IP address 2025-02-21 13:57:25 +01:00
pcs net: pcs: xpcs: fix the wrong register that was written back 2024-10-10 11:57:58 +02:00
phy net: phy: microchip: force IRQ polling mode for lan88xx 2025-05-02 07:50:46 +02:00
plip net: plip: fix break; causing plip to never transmit 2024-11-01 01:58:29 +01:00
ppp net: ppp: Add bound checking for skb data on ppp_sync_txmung 2025-04-25 10:45:09 +02:00
pse-pd net: pse-pd: PSE_REGULATOR should depend on REGULATOR 2022-10-05 20:32:28 -07:00
slip slip: make slhc_remember() more robust against malicious packets 2024-10-17 15:24:30 +02:00
team team: better TEAM_OPTION_TYPE_STRING validation 2025-02-21 13:57:07 +01:00
thunderbolt net: thunderbolt: Fix TCPv6 GSO checksum calculation 2023-09-15 13:45:05 +01:00
usb cdc_ether|r8152: ThinkPad Hybrid USB-C/A Dock quirk 2025-04-25 10:45:16 +02:00
vmxnet3 vmxnet3: Fix tx queue race condition with XDP 2025-02-17 09:40:12 +01:00
vxlan vxlan: check vxlan_vnigroup_init() return value 2025-02-21 13:57:07 +01:00
wan drivers/net: process the result of hdlc_open() and add call of hdlc_close() in uhdlc_close() 2023-09-22 08:19:18 +01:00
wireguard wireguard: send: annotate intentional data race in checking empty queue 2024-07-18 13:21:23 +02:00
wireless wifi: rtw89: pci: disable PCIE wake bit when PCIE deinit 2025-04-25 10:45:57 +02:00
wwan net: wwan: mhi_wwan_mbim: Silence sequence number glitch errors 2025-03-22 12:50:43 -07:00
xen-netback net/xen-netback: prevent UAF in xenvif_flush_hash() 2024-10-10 11:57:22 +02:00
amt.c amt: do not use overwrapped cb area 2024-01-25 15:35:56 -08:00
bareudp.c bareudp: Pull inner IP header on xmit. 2024-10-04 16:28:58 +02:00
dummy.c net: add netdev_lockdep_set_classes() to virtual drivers 2024-04-13 13:07:30 +02:00
eql.c net: rename reference+tracking helpers 2022-06-09 21:52:55 -07:00
geneve.c geneve: Suppress list corruption splat in geneve_destroy_tunnels(). 2025-02-27 04:10:49 -08:00
gtp.c gtp: Suppress list corruption splat in gtp_net_exit_batch_rtnl(). 2025-02-27 04:10:49 -08:00
ifb.c net: Remove the obsolte u64_stats_fetch_*_irq() users (drivers). 2022-10-28 20:13:54 -07:00
Kconfig netconsole: Enable compile time configuration 2023-08-17 19:25:42 -07:00
LICENSE.SRC Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
loopback.c net: loopback: Avoid sending IP packets without an Ethernet header 2025-03-07 16:45:38 +01:00
macsec.c macsec: Fix use-after-free while sending the offloading packet 2024-11-08 16:28:18 +01:00
macvlan.c macvlan: Don't propagate promisc change to lower dev in passthru 2023-11-28 17:19:54 +00:00
macvtap.c drivers: remove struct module * setting from struct class 2023-03-17 15:16:27 +01:00
Makefile net: Always descend into dsa/ folder with CONFIG_NET_DSA enabled 2024-06-12 11:12:46 +02:00
mdio.c net: mdio: Correct function name mdio45_links_ok() in comment 2021-03-29 13:42:44 -07:00
mhi_net.c net: mhi: Remove redundant initialization owner in mhi_net_driver 2023-08-10 17:29:42 -07:00
mii.c net: mii: make mii_ethtool_gset() return void 2021-08-19 13:06:53 +01:00
net_failover.c net/net_failover: fix txq exceeding warning 2023-03-27 08:08:57 +01:00
netconsole.c net: netconsole: Disable target before netpoll cleanup 2024-08-03 08:54:13 +02:00
nlmon.c net: don't include ethtool.h from netdevice.h 2020-11-23 17:27:04 -08:00
ntb_netdev.c net: ntb_netdev: Move ntb_netdev_rx_handler() to call netif_rx() from __netif_rx() 2024-07-11 12:49:13 +02:00
rionet.c driver core: class: remove struct class_interface * from callbacks 2023-04-03 21:42:52 +02:00
sb1000.c net: dev: Makes sure netif_rx() can be invoked in any context. 2022-02-14 13:38:35 +00:00
Space.c net: move from strlcpy with unused retval to strscpy 2022-08-31 14:11:07 -07:00
sungem_phy.c net: sungem_phy: Add of_node_put() for reference returned by of_get_parent() 2022-07-21 19:04:19 -07:00
tap.c tap: add missing verification for short frame 2024-07-27 11:34:11 +02:00
tun.c tun: revert fix group permission check 2025-02-17 09:40:14 +01:00
veth.c net: add netdev_lockdep_set_classes() to virtual drivers 2024-04-13 13:07:30 +02:00
virtio_net.c virtio-net: fix overflow inside virtnet_rq_alloc 2024-12-14 20:00:07 +01:00
vrf.c ipv6: introduce dst_rt6_info() helper 2024-12-14 19:59:35 +01:00
vsockmon.c net: don't include ethtool.h from netdevice.h 2020-11-23 17:27:04 -08:00
xen-netfront.c xen-netfront: handle NULL returned by xdp_convert_buff_to_frame() 2025-05-02 07:50:46 +02:00