Hey Greg, Thanks for the help. Yeah I forgot the ethernet frame size.
But– shouldn't I be able to send TCP data regardless of MSS? Why should the MSS matter at the TCP network layer? I was using the nuttx master branch from several weeks ago. Just updated to the latest master, and things are much worse now. I can't do more than 3 TCP sends of any size now with tcpecho. After thee sends it just freezes. :( Re: Giant Board, haven't got it yet, but CrowdSupply said they will ship next week. Will let you know how it goes. I'm going to try the SAMA5D27-XULT first, but haven't got to it yet... I want to resolve the networking issues on the D36 that I can debug easily first. I'll check out the net/KConfig file. -adam On Sat, Feb 8, 2020 at 3:45 PM Gregory Nutt <spudan...@gmail.com> wrote: > > > I'm still having problems with TCP sending and receiving on the > SAMA5D36. I > > switched from tcpblaster to tcpecho. That works as long as whatever send > I > > do from the host linux computer is shorter than the MTU or ETH_PKTSIZE > > (right now, configured to be 1500 bytes). I'm using the SAMA5D36 GMAC > > (gigabit ethernet port) which has a max packet size of 1536 bytes. > > > > So I can do any amount of discrete sends, each of less than 1448 bytes. > > This seems to be because the IP header size is 30 bytes and the TCP > header > > size is 20 bytes, 1448 + 32 + 20 = 1500 bytes. > > > > But when I try to do a send of 1448 bytes or more, the tcpecho server > > hangs. It seems like it can't handle TCP sends that have more than one IP > > packet. > > > > What could cause that? Could it be a bug in the NuttX TCP code? Or is it > > some kind of misconfiguration on my part? > > The packet size is not the same as the MTU. The MTU excludes Ethernet > header. The packet size includes the size of Ethernet header (plus some > guard size). > > The Ethernet header size if 14 bytes. So the max packet size of 1536 > corresponds to an MTU of 1522. The IP and TCP header lengths are > variable in size, depending upon the number of options in the header. > With no options, the IPv4 header length is 20 bytes; the IPv6 header > length is 40 bytes. With no options, the TCP header length is, indeed, > 20 bytes. > > Assuming a packet size of 1536 bytes and IPv6, the maximum payload (MSS) > would be 1536 - 14 - 40 - 20 = 1452. This about what you are seeing. > If you are using IPv4, you should be able to get an MSS that is 20 bytes > larger. > > This is all discussed in detail in, as I recall, the net/Kconfig file. > > Greg > > PS: Did you get your Giant board? How did the bring-up go? > > > -- Adam Feuer <a...@starcat.io>