尊敬的 TI 团队:
我们使用 DP83867IRPAPT、
将 eth1链接设置为关闭后、 eth0 Link 状态意外关闭。
我的测试方案是:
$ ifconfig eth0 up; ifconfig eth1 up
TI DP83867 8000f00.MDIO:00:连接的 PHY 驱动程序[TI DP83867](MII_BUS:phy_addr=8000f00.MDIO:00、IRQ=POLL)
am65-cpsw-uss 8000000.ethernet eth0:链路断开
TI DP83867 8000f00.MDIO:01:连接的 PHY 驱动程序[TI DP83867](MII_BUS:phy_addr=8000f00.MDIO:01、IRQ=POLL)
am65-cpsw-uss 8000000.ethernet eth1:链路断开
IPv6:ADDRCONF (NETDEV_CHANGE):eth0:链路就绪
am65-cpsw-uss 8000000.ethernet eth0:链路已启动- 1Gbps/全-流控制已关闭
$ ifconfig | grep eth.:
eth0:flags=4163 <UP,BROADCAST,RUNNING,MULTICAST> MTU 1500
ETH1:flags=4099 MTU 1500
$./MDIO-tool r eth0 1 # BMSR 寄存器
0x796d
运行之后。 我关闭了 eth1。 Eth0也意外丢失链接。
$ ifconfig eth1 down
am65-cpsw-uss 8000000.ethernet eth0:链路断开
$ ifconfig eth0
eth0:flags=4099 MTU 1500
$./MDIO-tool r eth0 17 # STS2寄存器
0x1140
$./MDIO-tool r eth0 # BMCR 寄存器
0x1140
$./MDIO-tool r eth0 1 # BMSR 寄存器
0x1140
OS 轮询所有 LAN 的链路状态,在 drivers/net/phy/phy_device.c 的 genphy_update_link()中
通过 drivers/net/ti/davinci_mdio.c 上的 davinci_mdib_read()获取 PHY 链路状态
我确定驱动程序使用正确的 PHY ID 来写入 eth1 MDIO 寄存器。
Davinci_mdiobb_write (struct MII_bus *总线、int phy、int reg、 U16 val)
我 不知道它为什么会影响另一个 PHY (eth0)。
只有写入 eth1 (PHY1) MDIO 寄存器才会导致 Eth0 (PHY0)链路断开。
如果我交换 eth0和 eth1角色并进行测试、则没有问题。
写入 PHY0 MDIO 寄存器只影响自身。
有人能否提供有关此问题的一些线索?
谢谢、
肖恩


