【发布时间】:2020-07-30 13:38:23
【问题描述】:
我正在尝试设置嵌入式设备的以太网接口以运行,例如10 MBit/s / 半双工。
由于系统使用 systemd (systemd-networkd) 来配置网络设备,通常的方法可能是定义一个合适的 .link 文件,我尝试过:
/lib/systemd/network/20-eth0.link:
[Match]
Name=eth0
[Link]
MTUBytes=1450
BitsPerSecond=10M
Duplex=half
调用udevadm info /sys/class/net/eth0 告诉我链接文件已加载,甚至MTU 值也已正确采用。
但是速度和双工模式都没有改变 - ethtool eth0 输出:
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Link detected: yes
我也尝试过立即在 udev 规则中设置值:
/lib/udev/rules.d/10-persistent-network.rules:
ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*", ATTR{speed}="10", ATTR{duplex}="half", ATTR{mtu}="1400"
这使我得到相同的结果:采用 MTU 值,但既不是速度也不是双工模式
另一方面,使用ethtool -s eth0 speed 10 duplex half手动设置这些属性是没有问题的
我的建议是,驱动程序在启动后以某种方式加载默认值,因为dmesg 的最后一条消息在启动后说:
xilinx_axienet xilinx_axienet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
但我不确定这是否真的覆盖了我的设置,或者根本没有采用这些设置(因为它们被设置在具有更高优先级的其他位置,例如)
感谢您的建议
【问题讨论】: