Grzegorz Niemirowski <[email protected]> napisał(a):
Further analysis gave following observations:
- thread blocks on fetch because packets are no longer inserted into mbox
- packets are not inserted because the ETH interrupt is no longer raised
- there is no interrupt because reception is suspended, set bits in the
DMASR register show:
RPS bits: 100: Suspended: Receive descriptor unavailable
RBUS bit: Receive buffer unavailable status
Descriptors are freed inside low_level_input after PBUF has been
allocated and incoming packet has been copied. But it happens that
pbuf_alloc returns NULL. What could be the reason? The traffic is not
big, just a few kB/s. Maybe there is not enough space for PBUFs, but
the problem doesn't occur immediately, usually a few thousand packets
are transmitted without any issue before the stack stalls.
I've finally found the solution. I had SYS_LIGHTWEIGHT_PROT defined as 0.
After defining the macro as 1 the stack became stable.
Grzegorz Niemirowski
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users