我在用这个板块来自 congatec,我正在使用 Ubuntu 22.04。
我正在尝试将以太网 MTU 设置为 9000。使用此命令我可以看到最大以太网 MTU 为 9000:
ip -d link list
我尝试将其设置为 9000,但出现此错误:
xa70@xa70:~$ sudo ifconfig eno2 mtu 9000
SIOCSIFMTU: Invalid argument
我可以将 mtu 设置为最大 4096:
xa70@xa70:~$ sudo ifconfig eno2 mtu 4097
SIOCSIFMTU: Invalid argument
xa70@xa70:~$ sudo ifconfig eno2 mtu 4096
我也尝试过:
- 配置 MTU 之前禁用以太网接口
- 在以太网控制器的寄存器中启用巨型数据包支持
有人知道我在这里做错了什么吗?
编辑:
这是 jtessier72 命令的输出:
*-network:0
description: Ethernet interface
product: Intel Corporation
vendor: Intel Corporation
physical id: 1d.1
bus info: pci@0000:00:1d.1
logical name: eno1
version: 11
serial: a6:3c:0b:94:06:5e
size: 10Mbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list ethernet physical tp mii 10bt-fd 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=st_gmac driverversion=6.2.0-34-generic duplex=half latency=0 link=no multicast=yes port=twisted pair speed=10Mbit/s
resources: iomemory:600-5ff irq:125 memory:6001340000-600137ffff
*-network:1
description: Ethernet interface
product: Intel Corporation
vendor: Intel Corporation
physical id: 1d.2
bus info: pci@0000:00:1d.2
logical name: eno2
version: 11
serial: de:db:d7:7b:11:80
size: 10Mbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list ethernet physical tp mii 10bt-fd 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=st_gmac driverversion=6.2.0-34-generic duplex=half latency=0 link=no multicast=yes port=twisted pair speed=10Mbit/s
resources: iomemory:600-5ff irq:157 memory:6001300000-600133ffff
答案1
根据这个笔记错误SIOCSIFMTU: Invalid argument
信息
表示内核拒绝了请求的 MTU。这通常是由于它超出了接口硬件支持的最大值。在这种情况下,您必须将 MTU 降低到支持的值或获取更强大的硬件。
根据此主题,至少截至 2023 年 3 月 31 日,Elkhart Lake 平台可能仅支持 4096 字节。
stmmac_change_mtu 函数将 MTU 限制为 TX FIFO 中单个队列的大小。
例如,在没有设备树的 st_gmac 上,默认值为 4096。
同一线程提到至少某些平台不会动态更新 maxmtu,并且只会在最佳情况下报告 maxmtu。您的硬件可能仅支持最多 4096(至少给定默认值)。
您应该能够使用以下方法确认 MTU 支持:
sudo ip -d link list {ifname}
~$ sudo ip -d link list ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:50:56:93:c7:ba brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 60 maxmtu 9000 addrgenmode eui64 numtxqueues 4 numrxqueues 4 gso_max_size 65536 gso_max_segs 65535 parentbus pci parentdev 0000:03:00.0
altname enp3s0
请注意上面输出的minmtu 60
和部分。maxmtu 9000