Question about low level ETH init

Hartmut remembers well, 1536 is a perfect size for a DMA buffer.
“MTU” is a confusing term, because the Ethernet header ( 14 bytes ) is not included.

In many places in the FreeRTOS+TCP library, a network buffer is passed to functions with its protocol payload, for instance when sending or receiving zero-copy UDP packets.

When the IP-task receives a pointer to a payload, it will find a pointer to the containing network buffer before the beginning of the buffer, at -10 bytes bytes.

Here is an older post about this subject.

Summary: we want to reserve 1514 bytes for the largest packet, and 10 bytes for a hidden header.

That makes 1524 bytes, which is 0x5F4. If you put the DMA descriptors in a static array, it gives an alignment of 4 bytes. Now if you make it 12 bytes longer, you have a great alignment: 0x600. That is good, both for any DMA handler, but also for any data caching! Data caching often has cache lines of 32 or 64 bytes.

So, if your DMA is happy with an alignment of 4 bytes, and data caching is disabled for the network buffers, then you can use a size of 1524 bytes.
Otherwise I would recommend a size of 1536 bytes.