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()? Take care... /PH -- Per-Henrik Lundblom epost: [EMAIL PROTECTED] telefon: 0733-20 71 26 hemsida: www.whatever.nu _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
