TI的phy,由于TI没有资料说明MDI极性自适应功能的验证步骤,为了彻底弄明白该功能是否真实生效,便自行进行了以下MDI极性自适应功能测试实验。
实验使用了两块I板子进行测试,其中一块PHY的作为master端,另一块作为slave端;
使用两根母头的杜邦线作为其MDI的线束;使用mdio_rw 作为MDIO读写PHY寄存器的工具;
实验步骤如下:
1.交叉相接两块板子的MDI接口
2.设置一块板子的ip为192.168.1.2,作为master
ifconfig eth1 192.168.1.2 up
设置另一块板子的ip为192.168.1.25,作为slave
ifconfig eth1 192.168.1.25 up
3. 设置作为master的板子的PHY为mater模式
mdio_rw eth1 0 834 1 c000
设置作为slave的板子的PHY为slave模式
mdio_rw eth1 0 834 1 8000
4.设置mater的PHY MDI极性强制正常模式 / 强制反转模式 / 自动校准模式
mdio_rw eth1 0 553 1f 2000 / mdio_rw eth1 0 553 1f 3000 / mdio_rw eth1 0 553 1f 0000
设置slave的PHY MDI极性强制正常模式 / 强制反转模式 / 自动校准模式
mdio_rw eth1 0 553 1f 2000 / mdio_rw eth1 0 553 1f 3000 / mdio_rw eth1 0 553 1f 0000
(注意:步骤4总共有3^2 = 3 * 3 = 9种组合方式)
5.查看并记录link状态
mdio_rw eth1 0 1
(master的板子,与slave的板子均需操作)
6.重启NIC
ifconfig eth1 down
ifconfig eth1 up
(master的板子,与slave的板子均需操作)
7.再次查看并记录link状态
mdio_rw eth1 0 1
(master的板子,与slave的板子均需操作)
8.互相ping测试
master 的板子ping slave的板子
ping 192.168.1.25
slave 的板子ping master 的板子
ping 192.168.1.2
9.记录步骤4,步骤6,步骤7的结果
10.不再交叉相接(平行相接)两块板子的MDI接口,再次重复步骤2到步骤9
其他说明:
reg: 0x553
value: 0000: auto-polarity correction
2000: force normal
3000: force reversereg: 0x1
value: 0061 link down
0065 link up
MDI线束交叉相接 | MDI线束正常相接 | ||||||||
---|---|---|---|---|---|---|---|---|---|
mode | reg:0x553 | reg:0x1 | ping result | mode | reg:0x553 | reg:0x1 | ping result | conclusion | |
master | 0000 | 0065 | ok | master | 0000 | 0065 | ok | 证明了 auto-polarity correction 生效 | |
slave | 0000 | 0065 | ok | master | 0000 | 0065 | ok | ||
master | 0000 | 0065 | ok | master | 0000 | 0061 | nok | 证明了 slave 的 force reverse 生效 | |
slave | 3000 | 0065 | ok | slave | 3000 | 0065 | nok | ||
master | 0000 | 0061 | nok | master | 0000 | 0065 | ok | 证明了 slave 的 force normal 生效 | |
slave | 2000 | 0065 | nok | slave | 2000 | 0065 | ok | ||
master | 2000 | 0065 | ok | master | 2000 | 0065 | ok | 证明了 slave 的 auto-polarity correction 生效 | |
slave | 0000 | 0065 | ok | slave | 0000 | 0065 | ok | ||
master | 2000 | 0065 | ok | master | 2000 | 0061 | nok | 证明了 master 的 force normal 生效, slave的 force reverse 生效 | |
slave | 3000 | 0065 | ok | slave | 3000 | 0065 | nok | ||
master | 2000 | 0061 | nok | master | 2000 | 0065 | ok | 证明了 master 和slave 的 force normal 都生效 | |
slave | 2000 | 0061 | nok | slave | 2000 | 0065 | ok | ||
master | 3000 | 0065 | ok | master | 3000 | 0065 | ok | 证明了 slave 的 auto-polarity correction 生效 | |
slave | 0000 | 0065 | ok | slave | 0000 | 0065 | ok | ||
master | 3000 | 0061 | nok | master | 3000 | 0065 | ok | 证明了 master 和 slave 的 force reverse 都生效 | |
slave | 3000 | 0065 | nok | slave | 3000 | 0065 | ok | ||
master | 3000 | 0065 | ok | master | 3000 | 0061 | nok | 证明了 master 的 force reverse 生效, slave的 force normal 生效 | |
slave | 2000 | 0065 | ok | slave | 2000 | 0065 | nok |
结论:
1.当关闭slave端 MDI极性自适应后,反接MDI的线束,
在mater端的体现是link down;
在slave端的体现是link up 但ping 不通。
2.当slave端关闭了 MDI 极性自适应,无论master端是否打开 MDI 极性自适应功能,
通过反接MDI的线束,使用ping 命令都能体现出该功能是否已关闭。
3.当slave端打开了 MDI 极性自适应,无论master端是否打开 MDI 极性自适应功能,
反接MDI的线束,也不会影响整体link状态,且能ping 通。4.使用ping 命令,即可作为其是否生效的验证方式,而不是link 状态。