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?