我必须在Linux中编写一个以太网PHY环回测试。我以前从来没有做过,也不知道从哪里开始。经过一番研究,我想出了测试的计划,我想知道是否有人能帮我验证一下,并给我一些问题的指点。
这是一个外部环回设置。它为以太网交换芯片上的每个内部PHY连接TX+/-到RX+/-引脚。
所以环回高级数据包路径如下:
CPU->PHY0(芯片)->以太网交换机(芯片)内部PHY->PHY0(芯片)->CPU
对于这个测试,我计划
- 在以太网交换机上配置具有特定MAC地址的内部物理,
- 使用CPU的MAC地址作为源地址和
打包以太网测试数据包。步骤1中配置的MAC地址。作为目的地址, - 发送并等待接收测试数据包,
- 比较发送和接收的数据模式。
有什么建议吗?另外,我想知道Linux中是否有函数可以用来生成步骤2的数据包,并发送步骤3的数据包。
大多数物理可以切换到测试模式。我们使用引导加载程序直接写入Phy并切换到测试模式。
还有一个从documentation/networking/phy.txt中获取的ioctlEthtool便利功能。
int phy_mii_ioctl(struct phy_device)Struct mii_ioctl_data *mii_data, int cmd);
MII ioctl。注意,这个函数会完全搞砸状态如果你写寄存器,如BMCR, BMSR, ADVERTISE等。最好使用此方法仅用于编写不标准的寄存器,并且不设置重新谈判。