Hi all: I am a newcomer to lwIP, I am developing a bare metal embedded firmware that will need to communicate with peer devices in the future. For now, I am using the loopback interface for developing purposes. The lwIP version is 1.4.1. Both the listening and the client side are on the same firmware running on an STM32F29 evaluation board.
When the single TCP connection is established, both connection ends send every now and them a few bytes of known data. After both ends have sent 2 packets of data, each side receives just 1 packet with the right data inside. Then no packet is ever received again, even though many more packet data continue to get queued. The data amounts are very small. On every attempt the amount reported by tcp_sndbuf() decreases over time down to 0 on both connection ends. I've tried everything I could think of. I've searched the documentation, I've filled the code with error checks and asserts, the tcp_recv() callback does call tcp_recved() and pbuf_free( p ), I am calling tcp_output() at regular intervals, etc. I have also enabled debug and statistics all over the place. After more than 20 pieces of data sent, the LINK stats look like this: xmit: 5 recv: 5 drop: 3 memerr: 3 Everything else is 0. I have read about lack of memory being a possible cause for the dropped packets, so I have increased the following symbols to these values: #define LWIP_LOOPBACK_MAX_PBUFS 30 // Default was 10. #define PBUF_POOL_SIZE 64 // Default was 16. #define TCP_SND_QUEUELEN 64 // Default was 8. That hasn't helped. What could I do in order to try and narrow the problem down? If this is a memory problem, what memory-related symbols could I try increasing? Many thanks in advance, rdiez _______________________________________________ lwip-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/lwip-users
