[dpdk-dev] [RFC] ethdev: add min/max MTU to device info

Stephen Hemminger stephen at networkplumber.org
Wed Feb 6 17:11:07 CET 2019


On Wed, 6 Feb 2019 14:05:34 +0100
Morten Brørup <mb at smartsharesystems.com> wrote:

> Good work, Stephen.
> 
> It should also be documented how PMDs should interpret this MTU.
> 
> Obviously, a VLAN tagged Ethernet frame grows from 1518 to 1522 bytes incl. header and CRC, and should be allowed with an Ethernet MTU of 1500 bytes. There's even a #define ETHER_MAX_VLAN_FRAME_LEN for this, but that's as far as it goes...
> 
> But how about frames with even larger headers, e.g. 4 MPLS labels makes a frame 16 bytes longer, i.e. it grows from 1518 to 1534 bytes... is such a frame acceptable with an MTU of 1500 bytes?

No. According to standard practice in Linux and FreeBSD, only the first VLAN tag is free.
After that any other headers count against MTU.

> 
> According to Wikipedia (https://en.wikipedia.org/wiki/Maximum_transmission_unit), MTU describes the maximum payload size, and is not tied to the maximum frame size. However, the Linux kernel (at least the older versions I have been working with) incorrectly ties the MTU directly to the maximum frame size, so the MTU has to increased to support larger headers (e.g. QinQ or an MPLS stack). Do none, all or some DPDK PMDs suffer from the same error?
> 

Maximum Transmission Unit and Maximum Receive Unit (MRU) are separate. On most hardware they are the same but
there is variation. Some hardware can receive larger sizes than MTU and some have max receive length register.


More information about the dev mailing list