I have a whole lot of lost segements in tcp_receive
in tcp_in.c. I've tried to figure it out why the other end of the ethernet cable
does overrun our window. What I have discovered is that the rcv_ann_wnd is
sometimes much larger than rcv_wnd. If this is because of poor window management
in lwip or if it is just because there can be quite large latencies when the bit
rate is high I don't know.
Anyway just because of the other end is a bad boy
doesn't mean that we have to trash the frame if it's outside our window. I made
a small hack where the tcp_receive function dosen't reject the frame if it's
greater than pcb->rcv_nxt + pcb->rcv_wnd - 1. (I just added 64*TCP_MSS to
the right edge in the compare).
Is this something we could change in some future
release? Any comments?