The way pbufs are arranged depends on the fragmentation of the memory
pool at the time of allocation.
When an Ethernet frame is received, your netif code calls the lwIP alloc
function to get memory to store the frame's content. DMA implementations
might be different.
The fact that you are getiing whole pbufs is not a problem, I just
pointed out that a single pbuf per Ethernet frame is not a constant, and
might change with memory conditions, you must check p->tot_len and free
tot_len to avoid losing data and stucking the memory pool, respectively.
There is no lwIP magic for large data vs. small transfers, it is just
data transfer and it will keep going as long as you call tcp_recved() to
send ACKs and pbuf_free() to free memory.
Have you looked at a network capture ? Can you post one ?
What port are you running ? NO_SYS ? Are you definitely calling the api
from a single thread ? (foreground only, no ints, if NO_SYS=1)
Do you call TCP timer functions frequently enough ?


_______________________________________________
lwip-users mailing list
lwip-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to