This is the mail archive of the
ecos-devel@sources.redhat.com
mailing list for the eCos project.
redboot net_io stalls
- From: Jani Monoses <jani at iv dot ro>
- To: ecos-devel at ecos dot sourceware dot org
- Date: Tue, 10 Aug 2004 16:51:07 +0300
- Subject: redboot net_io stalls
Hello
I found a problem in redboot's net_io and have a workaround for it but a
proper fix would be better.
When redboot is sent a lot of TCP data its 4 pktbufs can get filled very
shortly: telnet to it and paste a big text to the prompt to see it hang.
The problem is that from time to time net_io calls net_io_flush which waits
until all queued outgoing data is sent.If flush happens when the 4 bufs are
occupied then communication will stall since redboot won't get the host's ACK
(the ACK packets are dropped not having a free pktbuf to stay in). And getc()
is not called to consume the pktbufs until the flush returns.
As a workaround I call __tcp_write instead of __tcp_write_block from flush
so it does not get stuck in __tcp_drain. But this means flush is not a real
flush...
This might be related to the HACK comment in tcp.c which says that sometimes
ACK's were lost.
Jani