nuttx/arch/arm
Jorge Guzman be559984e5
Some checks are pending
MemBrowse Memory Report / changes-filter (push) Waiting to run
MemBrowse Memory Report / load-targets (push) Waiting to run
MemBrowse Memory Report / identical (push) Blocked by required conditions
MemBrowse Memory Report / analyze (push) Blocked by required conditions
stm32h7/ethernet: never transmit a reply into a full TX ring
The receive path hands incoming packets to the stack and transmits
whatever reply comes back, without checking that a TX descriptor is
free, though the poll path checks exactly that. Under sustained
bidirectional load the reply lands on a descriptor the DMA still owns:
with assertions built in, a panic from the RX work queue
(DEBUGASSERT(des3 & RD_OWN), reproduced under a VNC pointer flood);
without them, corruption of a frame in flight.

A reply to received data is almost always an acknowledgement, and a
peer that misses one retransmits; overwriting a frame the DMA owns
recovers from nothing. Drop the reply when the ring is full, using the
same descriptor test the poll path already trusts.

Assisted-by: Claude:opus-5
Signed-off-by: Jorge Guzman <jorge.gzm@gmail.com>
2026-08-23 16:13:12 -03:00
..
include arch/arm: add initial STM32H7R/S family support 2026-08-23 11:03:16 +08:00
src stm32h7/ethernet: never transmit a reply into a full TX ring 2026-08-23 16:13:12 -03:00
CMakeLists.txt
Kconfig arch/arm/stm32u3: Add STM32U3C5 architecture support 2026-08-23 11:03:03 +08:00