Ethernet MTU

30 Nov 2010 . Edited: 30 Nov 2010

It looks like the ethernet API initialize the Max Frame Register (MAXF - 0x5000 0014) to 0x300 (768 bytes)

i.ethernet_init:0000011A                 MOVS    R1, #0x30 ; '0'
i.ethernet_init:0000011E                 LSLS    R1, R1, #4
i.ethernet_init:00000120                 STR     R1, [R4,#0x14]

Is there any reason ?

Why not 0x600 to be able to handle a full ethernet frame ?

09 Mar 2011

Can the mbed developers please explain this issue? The manual states that the Maximum Frame register (MAXF) should normally be 0x0600. Manually setting the register doesn't seem to help either, using the following code:

LPC_EMAC->MAXF = 0x0600;
09 Mar 2011

If you are using the Mbed library Ethernet then, afaik, it only supports a frame size of around 700 bytes rather than the 1500 or so normally supported by the hardware. So if you go doing LPC_EMAC->MAXF = 0x0600; it's likely you will overrun the EMAC DMA buffers the library set's aside for the buffers. Probably leading to a crash.

See this thread for more info and an experimental Mbed library that supposed to support the higher MTU.

10 Mar 2011

Hi Thomas, Steven,

You can try out the updated ethernet driver supporting 1500 byte MTU in the v29 library beta. See http://mbed.org/forum/bugs-suggestions/topic/1980/

Please report back with how you get on.

Thanks, Simon