linux/drivers/net
Yannick Vignon 084a1858e2 net: stmmac: Do not enable RX FIFO overflow interrupts
[ Upstream commit 8a7cb245cf28cb3e541e0d6c8624b95d079e155b ]

The RX FIFO overflows when the system is not able to process all received
packets and they start accumulating (first in the DMA queue in memory,
then in the FIFO). An interrupt is then raised for each overflowing packet
and handled in stmmac_interrupt(). This is counter-productive, since it
brings the system (or more likely, one CPU core) to its knees to process
the FIFO overflow interrupts.

stmmac_interrupt() handles overflow interrupts by writing the rx tail ptr
into the corresponding hardware register (according to the MAC spec, this
has the effect of restarting the MAC DMA). However, without freeing any rx
descriptors, the DMA stops right away, and another overflow interrupt is
raised as the FIFO overflows again. Since the DMA is already restarted at
the end of stmmac_rx_refill() after freeing descriptors, disabling FIFO
overflow interrupts and the corresponding handling code has no side effect,
and eliminates the interrupt storm when the RX FIFO overflows.

Signed-off-by: Yannick Vignon <yannick.vignon@nxp.com>
Link: https://lore.kernel.org/r/20210506143312.20784-1-yannick.vignon@oss.nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-22 11:38:30 +02:00
..
appletalk
arcnet
bonding bonding: wait for sysfs kobject destruction before freeing struct slave 2020-12-08 10:40:24 +01:00
caif
can can: m_can: m_can_tx_work_queue(): fix tx_skb race condition 2021-05-19 10:08:28 +02:00
dsa net: phy: marvell: fix detection of PHY on Topaz switches 2021-04-21 12:56:18 +02:00
ethernet net: stmmac: Do not enable RX FIFO overflow interrupts 2021-05-22 11:38:30 +02:00
fddi FDDI: defxx: Make MMIO the configuration default except for EISA 2021-05-19 10:08:32 +02:00
fjes
hamradio
hippi
hyperv hv_netvsc: Remove "unlikely" from netvsc_select_queue 2020-09-23 12:40:34 +02:00
ieee802154 drivers: net: fix memory leak in atusb_probe 2021-04-14 08:24:18 +02:00
ipvlan
netdevsim netdevsim: init u64 stats for 32bit hardware 2021-03-17 17:03:35 +01:00
phy net: phy: intel-xway: enable integrated led functions 2021-05-14 09:44:31 +02:00
plip
ppp
slip
team team: protect features update by RCU to avoid deadlock 2021-02-03 23:26:02 +01:00
usb net: usb: ax88179_178a: initialize local variables before use 2021-05-07 10:51:37 +02:00
vmxnet3
wan net: lapbether: Prevent racing when checking whether the netif is running 2021-05-14 09:44:26 +02:00
wimax staging: wimax/i2400m: fix byte-order issue 2021-05-11 14:04:05 +02:00
wireless qtnfmac: Fix possible buffer overflow in qtnf_event_handle_external_auth 2021-05-19 10:08:24 +02:00
xen-netback xen-netback: Check for hotplug-status existence before watching 2021-04-28 13:19:15 +02:00
Kconfig
LICENSE.SRC
Makefile
Space.c
dummy.c
eql.c
geneve.c net: geneve: modify IP header check in geneve6_xmit_skb and geneve_xmit_skb 2021-05-14 09:44:31 +02:00
gtp.c net: icmp: pass zeroed opts from icmp{,v6}_ndo_send before sending 2021-03-04 10:26:53 +01:00
ifb.c
loopback.c
macsec.c macsec: avoid use-after-free in macsec_handle_frame() 2020-10-14 10:33:00 +02:00
macvlan.c
macvtap.c
mdio.c
mii.c
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
sungem_phy.c
tap.c net: fix dev_ifsioc_locked() race condition 2021-03-07 12:20:43 +01:00
thunderbolt.c
tun.c net: tun: set tun->dev->addr_len during TUNSETLINK processing 2021-04-14 08:24:18 +02:00
veth.c veth: Store queue_mapping independently of XDP prog presence 2021-03-30 14:35:24 +02:00
virtio_net.c virtio_net: Do not pull payload in skb->head 2021-05-22 11:38:28 +02:00
vrf.c vrf: packets with lladdr src needs dst at input with orig_iif when needs strict 2020-12-21 13:27:03 +01:00
vsockmon.c
vxlan.c vxlan: move debug check after netdev unregister 2021-03-04 10:26:38 +01:00
xen-netfront.c