I've solved this by sending data with smaller chunks at a time ( i call tcp_write with TCP_MSS bytes at a time ). unfortunately this slows down uplink.
seems that this is issue with lwip, because i didn't see this problem with windows tcp/ip at the same machine, connecting the same server. On Monday 19 March 2007 17:17, Per-Henrik Lundblom wrote: > Hi, > > I am using lwIP on an ARM7 platform with somewhat limited resources > regarding RAM. In my application I pump data between two devices (both > running lwIP) in full duplex over one TCP link. To cope with lost > packets and retransmissions (I'm running this over WLAN) I continously > adjust the TCP receive window in both ends to reflect the free amount of > pbuf:s. > > With this setup, I get the following problem: Both devices pump data, at > about the same time both devices need to resend it's data. This causes > data to be buffered and the free amount of pbufs to decrease which > closes the receive window. Still data is enqueued in the TCP send queues > via tcp_write. The packets assembled and queued in the unsent queue are > MSS bytes large. At about the same time the receive windows in both ends > falls below one MSS in size. This stalls everything. > > None of the devices can get rid of their buffered data because the > buffered packets in the unsent queue are too large to be sent without > being split. No such split mechanism seems to be implemented as I can > see it. > > Have I understood this right? If yes, is the solution to implement > fragmentation for the unacked/unsent queue in tcp_output()? > _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
