Greg, I have write buffering enabled: CONFIG_NET_WRITE_BUFFERS=y
Here are my IOB settings: CONFIG_MM_IOB=y CONFIG_IOB_NBUFFERS=24 CONFIG_IOB_BUFSIZE=196 CONFIG_IOB_NCHAINS=24 CONFIG_IOB_THROTTLE=0 I do have some more data. I did a manual git bisect to find out where things started getting worse. I went back to Jan 1 and tested various commits with a custom program that talks to tcpecho (binary search to zero in on where the problems are). Commits before and after, up to the current tip, hang when I try to do consecutive TCP sends. Since Jan 1, most of the commits can't do more than 10 consecutive TCP sends of 1000 characters, that's a lot less than the MSS of 1447. However, commit c1f75af084010bd8a13b2481abc38d848cd545f2 seems to work the best. With that commit, as long as CONFIG_TIME_EXTENDED is not set, I can send as many 1400 character TCP sends as I want... thousands in a row. However, if I set CONFIG_TIME_EXTENDED=y, things stop working, I can only do a few TCP sends before the tcpecho hangs. Note that through all this, if I try to send more than about 1440 characters in a single TCP send, tcpecho will hang. That isn't right but I haven't tracked that problem down either. I tried to use a debugger and also syslog to trace what difference the CONFIG_TIME_EXTENDED was making– why it causes the hang if it is turned on. But I haven't figured that out yet. Do you have any ideas? Re: Wireshark, I have been using tcpdump extensively. The linux side seems to send the first TCP packet ok. tcpecho can echo back if CONFIG_TIME_EXTENDED is not set and the MSS is 1400 bytes or less. If MSS is larger than 1447 tcpecho will send a few packets and then hang. I haven't characterized the boundary (1400-1448 bytes). I also just figured out the CONFIG_TIME_EXTENDED thing this afternoon so haven't looked at tcpdump traces of it yet, but I will and report back. I can send some tcpdump traces if that would help. Would it? -adam On Sun, Feb 9, 2020 at 5:21 AM Gregory Nutt <spudan...@gmail.com> wrote: > > > My question about MSS wasn't clear– what I mean is, to an application > (like > > tcpecho or tcpblaster), the size of MSS shouldn't matter. Shouldn't the > > application be able to send as many bytes as it wants? The TCP stack > > divides the stream up into chunks (of MSS length) and transmits them... > > sending more than MSS bytes should not hang the application...? > Yes, that is correct. > > That's not what I"m seeing with the NuttX that I'm using > (SAMA5D36-Xplained > > using the gigabit ethernet port, built from the latest master). > Do you have write buffering enabled? Do you have enough IOBs > pre-allocated? Have you tried looking at the traffic with WireShark? > > > -- Adam Feuer <a...@starcat.io>