我们有一个运行 Linux 4.9并使用 DP83867ERGZ 作为其千兆位 PHY 的产品。 如果在连接所有线对的情况下使用 CAT5电缆、则 PHY 操作不会出现问题。
我们遇到的问题是、如果我们将 DP83867ERGZ 连接 到另一个千兆位设备、但在 C 或 D 通道中使用有故障导线的电缆、我们仍然得到报告为 UP 的链路速度为1000 Mbit。 根据 Linux 接口的统计信息、接口已启动并且正在正常传输数据包、但接收到的数据包为零。 当然、由于 C 或 D 通道出现故障、在另一端不会接收数据包。
我们的期望是链路 会自动下调至100Mbit、因为只有 A+B 通道正常工作时该链路才能正常运行。
数据表(SNLS504D)建议器件支持应 可调整链路速度的"速度优化"、但这仅在失败的自动协商之后发生。 在我们看来、即使 C 和 D 通道都出现故障、自动协商也总是成功的。 因此、速度优化并没有开始。
我们已调整 Linux PHY 驱动程序、以转储寄存器并在启动期间实现速度优化、如下所示、但我们仍然 遇到 PHY 协商1G 链路并报告成功的问题:
[ 5.900050] TI DP83867 87e005003880:536912433寄存器转储
[ 5.905210] 0x00:0x1140
[ 5.907933] 0x01:0x7949
[5.910650] 0x02:0x2000
[ 5.913370] 0x03:0xa231
[5.916091] 0x04:0x01e1
[ 5.918807] 0x05:0x0000
[ 5.921528] 0x06:0x0064
[ 5.924248] 0x07:0x2001
[ 5.926964] 0x08:0x0000
[ 5.929684] 0x09:0x0300
[ 5.932404] 0x0a:0x0000
[ 5.935121] 0x0B:0x0000
[ 5.937841] 0x0c:0x0000
[ 5.940561] 0x0d:0x401f
[ 5.943277] 0x0E:0x0077
[5.945998] 0x0F:0x3000
[ 5.948718] 0x10:0xd048
[5.951435] 0x11:0x0002
[ 5.954155] 0x12:0x0000
[ 5.956875] 0x13:0x0000
[ 5.95959592] 0x14:0x29c7
[ 5.962312] 0x15:0x0000
[ 5.965032] 0x16:0x0000
[ 5.967754] 0x17:0x0040
[5.970470] 0x18:0x5b
[ 5.973190] 0x19:0x4444
[ 5.975911] 0x1a:0x0002
[ 5.978627] 0x1b:0x0000
[ 5.981347] 0x1c:0x0000
[ 5.984068] 0x1d:0x0000
[ 5.986784] 0x1E:0x0002
[ 5.989504] 0x1f:0x0000
[5.992204]启用 DP83867速度优化增强
[ 5.997810] 0x14:0x2bc7
我们查看了数据表、但看不到任何缺失的可解决此问题的标志或设置。
检测此故障情况并获取100M 链路的正确方法是什么?
谢谢!
