What determines the maximum MTU size for ethernet? Can BB Enhanced send Jumbo Frames?

Hello,
I’m working on a project that involves Beaglebone Black Rev.C’s sending large UDP packets (>4000 bytes) to a local PC using ETH0.
The network switch and receiving PC support Jumbo Frames (>= 9kb) and it would be very helpful if the Beaglebones did too. As far as I can tell, the MTU limit is 1500 byte on the Beaglebones.
I have been looking into the BB Enhanced, which features Gigabit ethernet, and wonder if it could support Jumbo Packets, if in fact the Black Rev. C cannot.
For reference, I’m running BeagleBoard.org Debian Image 2018-01-28, 4.9.78-ti-r94
So my question is, what determines the MTU limits on the Beaglebone Black? Is it possible to increase it on either the Black or on the Enhanced?
My knowledge on the I’m trying to get a better understanding, so any help is appreciated.

Thank you.

Hi @Michael_Davis looking at:

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/461724/how-to-send-receive-jumbo-packet-by-am335x-emac

So: Yes, it’s Jumbo, but not much over 1500: 2016

Play around with the ip command to change it:

https://linuxconfig.org/how-to-enable-jumbo-frames-in-linux

Regards,

Hi @Michael_Davis looking at:

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/461724/how-to-send-receive-jumbo-packet-by-am335x-emac

So: Yes, it’s Jumbo, but not much over 1500: 2016

Play around with the ip command to change it:

https://linuxconfig.org/how-to-enable-jumbo-frames-in-linux

The cpsw Ethernet interface built-in to the am335x, this connects over mdio to the phy used on both boards…

Regards,

Thank you @RobertCNelson, that is what I was looking for.

A packet length of ~2000 bytes could be a big help in my particular case.

However, both ip and ifconfig commands return an error if I attempt to set the packet size >1500.

ifconfig eth0 mtu 1501 up
SIOCSIFMTU: Invalid argument

ip link set eth0 mtu 1501
RTNETLINK answers: Invalid argument

Am I missing something here?

Thank you again.

Yeah, you’ll need to use sudo…

debian@bbb-pwr01-ser09:~$ sudo ip link set eth0 mtu 1600
Error: mtu greater than device maximum.
debian@bbb-pwr01-ser09:~$ ip link show | grep eth0
4: eth0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
debian@bbb-pwr01-ser09:~$ uname -r
4.19.94-ti-r64

Looks like we are maxed out…

Regards,

Thanks @RobertCNelson

For my own understanding, if the AM335x CPSW supports a maximum frame size of 2016 bytes, then this maximum of 1500 is set in the kernel driver?

Correct…

This is an override for RX:

https://elixir.bootlin.com/linux/latest/source/drivers/net/ethernet/ti/cpsw.c#L58

Regards,

Thanks @RobertCNelson

So an override for TX would also be possible?

I apologize if this seems naive, I haven’t made changes on the kernel level before. But I may pursue this if it is “possible.”

That url links to a module parameter… You should be able to overide it on the cmdline during bootup…

So something like:

cpsw.rx_packet_max=1500

Untested tweak it as you need it…

Regards,

Try:

ip link set eth0 mtu 9000

See this for refrence

https://www.cyberciti.biz/faq/how-can-i-setup-the-mtu-for-my-network-interface/

Hi @iankwalker do you have the hardware?

debian@bbb-pwr01-ser09:~$ sudo ip link set eth0 mtu 9000
Error: mtu greater than device maximum.

Finally found the answer in the AM335x docs:
Maximum frame size 2016 bytes (2020 with VLAN)

A quick scan of the CPU used on the BBB leads me to believe that it may not support jumbo frames. The AM335x Stiara has an embedded 2 port switch and the TI data sheet lists the switch as only having 8K bytes of buffer (packet memory). I see no mention in any of TI’s doc’s for jumbo frame or even for a place to set the MTU (PDU size) .

So, it doesn’t look good for 9000 byte jumbos.