needs_aneg =true;break;casePHY_NOLINK:if(phy_interrupt_is_valid(phydev))break; err = phy_read_status(phydev);if(err)break;if(phydev->link) {if(AUTONEG_ENABLE == phydev->autoneg) { err = phy_aneg_done(phydev);if(err <0)break;if(!err) { phydev->state = PHY_AN; phydev->...
READ PHY STATUS状态 在本状态时,本模块向子模块mdio_control发送所要读取的PHY芯片地址phy_address和寄存器地址register_address,并将mdio_read_en使信号置1,使能mdio_control模块接收数据,随后进入WAIT AUTO NEG DONE状态。在本例程中,读取的为1.2.2节中所述地址为0x19的状态寄存器的bit15,bit10~8,bit2。该寄存...
| val = phy_read(phydev, MII_ESTATUS);// 读取 mdio 0x0f 寄存器来确定 phy 的 1000M 能力 | linkmode_mod_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, phydev->supported, val & ESTATUS_1000_TFULL); | linkmode_mod_bit(ETHTOOL_LINK_MODE_1000baseT_Half_BIT, phydev->supported, val & E...
| val = phy_read(phydev, MII_ESTATUS);// 读取 mdio 0x0f 寄存器来确定 phy 的 1000M 能力 | linkmode_mod_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, phydev->supported, val & ESTATUS_1000_TFULL); | linkmode_mod_bit(ETHTOOL_LINK_MODE_1000baseT_Half_BIT, phydev->supported, val & E...
phy_read_status//读取phy的状态 phydev->drv->read_status(phydev);//.read_status = genphy_read_status genphy_read_status genphy_update_link phy_read(phydev,MII_BMSR);//读取phy的状态寄存器 if((status&BMSR_LSTATUS)==0)//phy 的链路状态 ...
(*read_status)(struct phy_device *phydev); int (*ack_interrupt)(struct phy_device *phydev); int (*config_intr)(struct phy_device *phydev); int (*did_interrupt)(struct phy_device *phydev); void (*remove)(struct phy_device *phydev); int (*match_phy_device)(struct phy_device *...
102.err = phy_read_status(phydev); // 读phy状态,包括link,速率、双工,等等 103.if (err) 104.break; 105. 106.if (phydev->link) { 107.phydev->state = PHY_RUNNING; // 连接网络时,则变成RUNNING 108.netif_carrier_on(phydev->attached_dev); ...
62.err = phy_read_status(phydev); //再次获取 phy 链路状态 63. 64.if (err) 65.break; 66. 67.if (phydev->link) { 68.phydev->state = PHY_RUNNING; //协商成功,建立连接,设置phy的状态为 PHY_RUNNING ---8--- 69.netif_carrier_on(phydev->attached_dev); 70.}...
使用mii dump命令可以查看phy的0~5的6个寄存器(使用mii read命令不存在这个说法,所有寄存器都能看 )。因为我们的PHY地址是0x04,所以mii dump里的addr我们填0x04,reg部分我们从0填到5就能看全所有的寄存器了。现在是插着网线的,所以可以看到“(0004:0004) 1. 2 = 1 link status”表示link成功了,拔掉网线这里...