Cannot modify ethernet MTU from Ubuntu Desktop GUI

I am using Jetson Orin Developer kit and wanted to use ethernet Jumbo Frame (say 9000 bytes).

I can modify ethernet MTU by following commands. This works!

nvidia@linux:~$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1466
        inet 192.168.5.33  netmask 255.255.255.0  broadcast 192.168.5.255
        inet6 2409:10:c860:1200:4ab0:2dff:fe78:aab0  prefixlen 64  scopeid 0x0<global>
        inet6 2409:10:c860:1200:b1dc:ca06:a77e:ecbc  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::4ab0:2dff:fe78:aab0  prefixlen 64  scopeid 0x20<link>
        ether 48:b0:2d:78:aa:b0  txqueuelen 1000  (Ethernet)
        RX packets 25778  bytes 27786578 (27.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9790  bytes 2173639 (2.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

nvidia@linux:~$ sudo ifconfig eth0 down
nvidia@linux:~$ sudo ifconfig eth0 mtu 9000
nvidia@linux:~$ sudo ifconfig eth0 up
nvidia@linux:~$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 8966
        inet 192.168.5.33  netmask 255.255.255.0  broadcast 192.168.5.255
        inet6 fe80::ce3a:848f:27a4:5e96  prefixlen 64  scopeid 0x20<link>
        inet6 2409:10:c860:1200:288e:b94c:4f1d:71d6  prefixlen 64  scopeid 0x0<global>
        inet6 2409:10:c860:1200:df41:4086:4beb:f4e6  prefixlen 64  scopeid 0x0<global>
        ether 48:b0:2d:78:aa:b0  txqueuelen 1000  (Ethernet)
        RX packets 28928  bytes 28081195 (28.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10695  bytes 2295835 (2.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

nvidia@linux:~$ ping www.google.com
PING www.google.com(nrt12s51-in-x04.1e100.net (2404:6800:4004:801::2004)) 56 data bytes
64 bytes from nrt12s02-in-x04.1e100.net (2404:6800:4004:801::2004): icmp_seq=1 ttl=116 time=365 ms
64 bytes from nrt12s02-in-x04.1e100.net (2404:6800:4004:801::2004): icmp_seq=2 ttl=116 time=6.07 ms
64 bytes from nrt12s02-in-x04.1e100.net (2404:6800:4004:801::2004): icmp_seq=3 ttl=116 time=5.47 ms
64 bytes from nrt12s02-in-x04.1e100.net (2404:6800:4004:801::2004): icmp_seq=4 ttl=58 time=5.60 ms
64 bytes from nrt12s02-in-x04.1e100.net (2404:6800:4004:801::2004): icmp_seq=5 ttl=58 time=5.42 ms
^C
--- www.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 5.418/77.580/365.346/143.883 ms
nvidia@linux:~$ 

But I couldn’t modify ethernet MTU by Desktop GUI by changing ‘Wired connection 1’ NetworkManager default profile.
Why this happen and how to resolve this???

I observed: (1) from Journalctl

nvidia@linux:~$ journalctl | grep NetworkManager | tail -20
May 17 02:37:15 linux NetworkManager[408]: <warn>  [1652780235.3626] platform-linux: do-change-link[3]: failure changing link: failure 16 (Device or resource busy)
May 17 02:37:15 linux NetworkManager[408]: <warn>  [1652780235.3631] device (eth0): mtu: failure to set IPv6 MTU
May 17 02:37:47 linux NetworkManager[408]: <warn>  [1652780267.4144] platform-linux: do-change-link[3]: failure changing link: failure 16 (Device or resource busy)
May 17 02:37:47 linux NetworkManager[408]: <warn>  [1652780267.4148] device (eth0): mtu: failure to set IPv6 MTU
May 17 02:38:14 linux NetworkManager[408]: <warn>  [1652780294.6524] platform-linux: do-change-link[3]: failure changing link: failure 16 (Device or resource busy)
May 17 02:38:14 linux NetworkManager[408]: <warn>  [1652780294.6529] device (eth0): mtu: failure to set IPv6 MTU

and also from (2) dmesg

nvidia@linux:/etc/NetworkManager$ dmesg | grep eth0
[    8.585344] nvethernet 6810000.ethernet: eth0 (HW ver: 31) created with 10 DMA channels
[   14.317128] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   14.337702] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU
[   14.340952] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU
[   15.371132] nvethernet 6810000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[   15.549994] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU
[   24.008825] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU
[   24.015327] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU
[   32.212684] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU
[   33.324136] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU
[   40.297927] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU
[   40.309546] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU
[   67.013590] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU
[  100.806595] nvethernet 6810000.ethernet eth0: must be stopped to change its MTU

This means , you should once down the “nvethrnet” driver before modifying MTU but NetworkManager GUI does not care about it.
Any suggestions?

  1. For the network manager issue, sounds like a bug. Please use ifconfig to control the MTU size for now.

  2. It is common that you need to down the interface before changing MTU size. jp4.x is also like that. The difference is if you change the MTU size in jp4.x network manager GUI, it will help you down the interface and up it again.

Thanks for the information.
Then I will check Jetpack 4.x on other Jetson Development Kit and check MTU change from GUI work or not.

Hi,

Could you try to disable the interface and then change the MTU by using GUI?

In ubuntu20.04, need to disable the interface so that GUI can change the configuration.

I checked Jetson TX2 running L4T R32.4.3 from Jetpack 4.4.

Now I understand, just modifying the MTU value would not change the running driver’s MTU value, but modifying each of the Profile setting. I can create new ethernet profile “Profile 1” and changed MTU value to 9000. Then switching ethernet profile to “Profile 1” made eth0 MTU value changed to 9000.

Also I checked dmesg log and found following.

[  649.389231] eqos 2490000.ether_qos: changing MTU from 1500 to 9000
[  649.469935] gpio tegra-gpio wake20 for gpio=52(G:4)
[  652.939954] eqos 2490000.ether_qos eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[  941.476265] eqos 2490000.ether_qos: changing MTU from 9000 to 1500
[  941.573806] gpio tegra-gpio wake20 for gpio=52(G:4)
[  941.612419] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  944.974509] eqos 2490000.ether_qos eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[  944.975182] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

So at least Jetpack 4.4/eqos ethernet driver on TX2 appears working with changing MTU value in GUI.

TurnOff_AGXOrinEthernet

I turned off ethernet connection from GUI (see picture attached) but this appears removing drivers routing table entry and the eth0 nvethernet driver was still ‘UP’ and ‘RUNNING’,
( See DHCP IP addresses are removed!)

(turn ethernet off from GUI)

 nvidia@linux:~$ ping 192.168.5.1
ping: connect: Network is unreachable
nvidia@linux:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
nvidia@linux:~$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1466
        ether 48:b0:2d:78:aa:b0  txqueuelen 1000  (Ethernet)
        RX packets 7152  bytes 8740363 (8.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1818  bytes 171314 (171.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

nvidia@linux:~$

(select 'Wired Network 1' profile again here)

nvidia@linux:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         buffalo.setup   0.0.0.0         UG    100    0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.5.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
nvidia@linux:~$ ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_seq=1 ttl=64 time=1.96 ms
64 bytes from 192.168.5.1: icmp_seq=2 ttl=64 time=2.08 ms
64 bytes from 192.168.5.1: icmp_seq=3 ttl=64 time=1.98 ms
64 bytes from 192.168.5.1: icmp_seq=4 ttl=64 time=2.09 ms
^C
--- 192.168.5.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 1.959/2.026/2.088/0.056 ms
nvidia@linux:~$ 

Also, I confirmed

nvethernet 6810000.ethernet eth0: must be stopped to change its MTU

kind of message appears in dmesg when profile switched.

This leads the nvethernet driver or NetworkManager in Jetpack 5.0 has some incompatibility compared to the previous versions and/or epos driver.

So are you able to change mtu size after you disable interface in GUI?

for AGX Orin (JetPack 5.0) NO. for TX2 (JetPack4.4) Yes.

Orin continue output

nvethernet 6810000.ethernet eth0: must be stopped to change its MTU

error log once off ethernet from GUI while TX2 (JetPack 4.4) has no such kind of error logs.

Ok. We will check.

Just want to double confirm.

The case is:

After you disable eth0 in GUI, the IP of “ifconfig eth0” is gone, but you still cannot configure the MTU size on GUI?

And the error “ethernet eth0: must be stopped to change its MTU” still spew when you try it?

Also, you don’t need to tell us the status of TX2 or rel-32. We know it can work on that release.

After you disable eth0 in GUI, the IP of “ifconfig eth0” is gone, but you still cannot configure the MTU size on GUI?
And the error “ethernet eth0: must be stopped to change its MTU” still spew when you try it?

Yes. Thanks in advance.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.