以太网PHY环回测试的编码

3
我需要在Linux中编写以太网PHY环回测试。我以前从未做过这个,也不知道从哪里开始。经过一些研究,我制定了测试计划,并想知道是否有人可以帮我验证它并回答我的问题。
这是一个外部环回设置。它将每个Ethernet交换芯片上的内部PHY的TX+/-连接到RX+/-引脚。
因此,环回高级数据包路径如下:
CPU->PHY0(芯片)->Ethernet交换机(芯片)的内部PHY->PHY0(芯片)->CPU
对于这个测试,我计划:
1.使用特定的MAC地址配置以太网交换机上的内部PHY, 2.使用CPU的MAC地址作为源地址和步骤1中配置的MAC地址作为目标地址来打包以太网测试数据包, 3.发送并等待接收测试数据包, 4.比较发送和接收到的数据模式。
有什么建议吗?另外,我想知道Linux中是否有可以用于生成步骤2的数据包和发送步骤3数据包的功能。
非常感谢。

你想用哪种语言来进行这个测试? - Mike Pennington
你好,你最终在Linux或者引导程序中进行了回环测试吗?谢谢。 - ransh
哇,我的回复太晚了。是的,我在引导加载程序中使它工作。Tim的答案来得太迟了,但我在其他地方找到了类似的方法。谢谢。 - user903151
1个回答

4

大多数物理设备可以切换到测试模式。我们使用引导加载程序直接写入Phy并切换到测试模式。

还有一个来自documentation/networking/phy.txt的ioctl,用于Ethtool便利函数。

int phy_mii_ioctl(struct phy_device *phydev, struct mii_ioctl_data *mii_data, int cmd);

MII ioctl。请注意,如果您像BMCR、BMSR、ADVERTISE等寄存器一样写入寄存器,此函数将完全破坏状态机。最好仅使用此函数写入非标准寄存器,并且不要触发重新协商。


谢谢Tim。我直到现在才看到你的回答。是的,你的回答应该适用于内部环回测试。然而,对于外部环回测试(使用外部环回连接器),我们不需要将PHY置于测试模式。只需将其设置为全双工模式和自动协商,并使用引导加载程序phy_mii API发送和接收数据即可。 - user903151

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接