[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Fwd: [lwip-users] netconn api problem
From: |
Tyrel Newton |
Subject: |
Fwd: [lwip-users] netconn api problem |
Date: |
Wed, 24 Nov 2010 07:08:42 -0800 |
Resubmitting this question as I didn't get any feedback the first time around.
> I have an 10Mbit Ethernet application that strictly uses TCP via the netconn
> API. All TCP writes are done with the NETCONN_COPY flag. I have 128MB of RAM
> in my system and all of the resource sizes set pretty high in lwipopts.h. I
> monitor the resources and I have yet to see the max come close to the avail.
>
> A problem occurs when I do the following:
>
> 1) send a huge buffer via a single call to netconn_write with sizes well over
> 64kB (usually in the 0.25~1 MB range)
> 2) immediately send a pretty small buffer (much less than the MSS for
> Ethernet) via a single call to netconn_write
>
> The problem is that the first byte (and only the first byte) of the second
> netconn_write call seems to get dropped. This happens randomly and not
> terribly frequently (maybe 10% of the time at worst). I can mitigate the
> problem by inserting a few seconds of delay between the two calls to
> netconn_write. The delay, I think, gives lwIP plenty of time to empty the
> send buffer and process the numerous TCP ACKS that are required to send the
> large buffer of data. The longer the delay, the less likely the first byte of
> the second call gets dropped.
>
> I'm connecting to lwIP from a Windows PC via a socket in python. I have a
> hard time believing the PC is dropping the byte. I know I could verify this
> with Wireshark, but since the problem is random and not too frequent, it
> would take me forever to wade through the lengthy packet history.
>
> Anybody have any insight and/or guidance on where I might go in the code or
> what settings I might tweak to fix and/or understand this issue?
>
> Other lwipopts.h settings that might be relevant:
>
> MEM_LIBC_MALLOC = 1
> TCP_OVERSIZE = 1
> LWIP_TCPIP_CORE_LOCKING = 1
> LWIP_TCPIP_CORE_LOCKING_INPUT = 1
Thanks,
Tyrel