Ethernet MTU

Chris Johns chrisj at
Thu Mar 26 23:40:50 UTC 2009

Michael Hamel wrote:
>> [ Please note replying to the last email on the list
>>    and changing the subject stuffs up the threading.
> Sorry, I forgot that the threading uses other headers..
>> Michael Hamel wrote:
>>> Has anyone used jumbo packets (MTU of ~9000) with the RTEMS 
>>> networking  stack? I have a working gigabit network stack up on the 
>>> PPC405EXr, but  I'm not seeing more than 17Mbytes a second throughput.
>> How are you testing this ?
> I have my own software running at both ends of the link; thats a one-way 
> figure derived from blasting the host with data as fast as I can 
> generate it.

What is the send buffer size for the socket set to ?
Are you using a switch or directly configured ?
Is the interface in full duplex and operating at 1G rates ?
Are you seeing any errors ?

Sorry about the long list of questions. :-)

I am still not clear on the testing set up. You have the same code on the same 
hardware sending data as fast as you can to each other. Is this correct ? Is 
this UDP or TCP ?

> My reading indicates that thats about what I should expect 
> without using jumbo packets as the turnaround overheads dominate gigabit 
> transfers with the standard MTU.

That is a fair statement for the given configuration. A different 
configuration would change the figure but the relationship would stay.

> I thought I might be able to use the SIOCSIFMTU ioctl() to change the 
> MTU, but in if_ethersubr.c I find this:
>         /*
>          * Set the interface MTU.
>          */
>         if (ifr->ifr_mtu > ETHERMTU) {
>             error = EINVAL;
>         } else {
>             ifp->if_mtu = ifr->ifr_mtu;
>         }
>         break;
> ... which is kind of discouraging. Does anyone know why its clipping to 
> ETHERMTU=1500 bytes?

The current FreeBSD code is the same.

ETHER_MAX_LEN_JUMBO is defined in cpukit/libnetworking/net/ethernet.h but not 
used any where in the code.

A check out of the FreeBSD kernel from cvs shows ETHER_MAX_LEN_JUMBO also 
defined in net/ethernet.h but no where else (well a device header which does 
not use it is discounted).

A closer look at the e1000 driver in the FreeBSD kernel in CVS has a section 
on Jumbo Frames. Maybe you should take a look and see where it leads.


More information about the users mailing list