我想使用 ethtool 测试带有ethtool --cable-test
和 的网络电缆ethtool --cable-test-tdr
。
我尝试在我的计算机(内部网络适配器)、两个 USB 转以太网适配器和 raspberry pi4 的内部适配器上执行此操作(以 root 身份)。
在所有情况下,我都得到了Unsupported Operation
。似乎只有特定的设备和驱动程序支持此功能。
有没有显示哪些的列表?我自己找不到。
在我的计算机上我有 arch linux,所以我有最新的 Linux 内核(6.6.6-arch1-1)。
如果你们中有人能给我指出正确的方向,告诉我如何完成这件事,那就太好了。
答案1
我做了以下事情:
检查了 ethtool 的源代码,以查看它在查询电缆测试结果时使用了哪些 netlink 消息(例如nl_cable_test
和nl_cable_test_tdr
)。然后我跟踪了这些内容,进入了内核驱动程序源代码树,看起来以下以太网 PHY 驱动程序支持某种基本电缆测试:
drivers/net/phy/at803x.c
drivers/net/phy/bcm-phy-lib.h
drivers/net/phy/nxp-c45-tja11xx.c
drivers/net/phy/nxp-tja11xx.c
drivers/net/phy/adin.c
drivers/net/phy/micrel.c
drivers/net/phy/bcm-phy-lib.c
drivers/net/phy/phy_device.c
drivers/net/phy/marvell.c
drivers/net/phy/microchip_t1.c
drivers/net/phy/bcm54140.c
... 要获得受支持的 NIC 芯片的完整列表,您必须查看这些源文件和代码中的其他地方,以了解适用于哪种 NIC 硬件。
唯一支持 TDR 测试(自 Linux 6.7.0 起)的是 marvell phy 驱动程序。源代码中其他地方的评论(例如 NIC IC 头文件)表明,其他各种芯片也具有一些软硬件 TDR 功能(包括一些古老的硬件),但看起来它们仍未实现。
Marvell TDR 测试支持似乎是由 Andrew Lunn 添加的,YT 上有几个视频展示了他的这项工作。