Hi,
I tried to follow your steps modifying ETH_DATA_LEN and ETH_FRAME_LEN inside the kernel, and I actually see MTU set to 9000. When I execute ifconfing command:
root@imx8qmmek:~# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000
inet XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX broadcast XXX.XXX.XXX.XXX
inet6 XXX.XXX.XXX.XXX prefixlen 64 scopeid 0x20<link>
ether XX:XX:XX:XX:XX:XX txqueuelen 1000 (Ethernet)
RX packets 831 bytes 90815 (88.6 KiB)
RX errors 241 dropped 317 overruns 0 frame 723
TX packets 379 bytes 1689274 (1.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
But when I execute the ping command with a packet of 8000 bytes it doesn't receive any packet:
root@imx8qmmek:~# ping XXX.XXX.XXX.XXX -s 8000
PING XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 8000(8028) bytes of data.
^C
--- XXX.XXX.XXX.XXX ping statistics ---
21 packets transmitted, 0 received, 100% packet loss, time 20483ms
Instead if I use a smaller size:
root@imx8qmmek:~# ping XXX.XXX.XXX.XXX -s 1900
PING XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 1900(1928) bytes of data.
1908 bytes from XXX.XXX.XXX.XXX: icmp_seq=1 ttl=64 time=1.18 ms
...
1908 bytes from XXX.XXX.XXX.XXX: icmp_seq=6 ttl=64 time=1.09 ms
^C
--- 10.10.140.53 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5006ms
rtt min/avg/max/mdev = 1.093/1.108/1.175/0.029 ms
I also tried to ping using a slightly bigger packet, like 2000, but it still doesn't work.
In my opinion I just see a higher MTU, but the MTU is still the same.
Executing the following command:
root@imx8qmmek:~# ip -d link list eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:04:9f:06:95:16 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 1966 addrgenmode eui64 numtxqueues 3 numrxqueues 3 gso_max_size 65536 gso_max_segs 100 parentbus platform parentdev
You can get the maximum MTU supported, which is 1966.
Indeed, if i try to ping using a size bigger than 1966 it won't work.
Do you have any suggest, please?