当以太网 PHY 已连接但 MAC 未初始化后 PHY 收到数据包时会发生什么情况

问题描述 投票:0回答:1

我对以太网MAC和PHY初始化过程有疑问。如果启用了自动协商并且两个PHY之间的物理网络连接起来,那么这两个PHY将进行自动协商以适应最佳操作模式(速度和双工模式) ).自协商失败后,PHY将向自身寄存器写入中断,从而导致MAC中断。MAC将中断传输给软件,软件通过MDIO总线读取PHY寄存器后需要设置MAC操作模式。但是在从协商开始到软件设置MAC down的时间窗口内,如果PHY在RX通道中接收到数据包,则PHY会将此帧发送到MAC,对吧? 所以我的问题是,在 MAC 设置为正确状态之前,MAC 会丢弃从 MII 总线接收到的帧,因为复位后 RECEIVE ENABLE 位设置为低?

我尝试阅读linux驱动程序代码./linux-master/drivers/net/ethernet/stmicro,但我不熟悉驱动程序代码或C/C++,所以我尝试在stackoverflow上问这个问题。 我在PHY init的过程中看到是MAC open的一部分,“ret = stmmac_hw_setup(dev, true);”硬件设置是在 PHY 连接之后进行的。

linux-kernel driver ethernet raw-ethernet ethernet-phy
1个回答
0
投票

您的问题非常技术性和具体性,但我会尽力根据现有信息提供有用的答复。

以太网 PHY(物理层)MAC(媒体访问控制) 协同工作来处理以太网帧。 PHY 负责向以太网电缆发送物理信号,而 MAC 处理数据链路层,其中包括帧组装/拆卸和错误检查。

此应用报告可以帮助您:

应用报告

PHY自协商后链接起来时,它确实向MAC发送中断。然后,MAC 将此中断传输给软件,软件通过 MDIO(管理数据输入/输出) 总线读取 PHY 寄存器,以设置 MAC 操作模式。

如果在从协商完成到

MAC 设置的时间窗口期间,PHYRX(接收) 通道中接收到数据包,PHY 确实会发送此帧到MAC。但是,如果 MAC 尚未处于正确状态 (即复位后 RECEIVE ENABLE 位设置为低),则 MAC 将不会处理该帧。这是因为 MAC 尚未准备好接收帧。

这可以帮助:

802.11/DMA

在您提到的Linux驱动程序代码中,

stmmac_hw_setup(dev, true);

函数是MAC初始化过程的一部分。此函数负责在 
PHY 链路建立后设置硬件,包括 MAC。如果在调用此函数并且设置 MAC 之前接收到帧,则该帧可能会被丢弃。

这可以帮助:

以太网控制器“stmmac”

请注意,这是一个高级解释,确切的行为可能取决于特定的以太网控制器和驱动程序实现。

© www.soinside.com 2019 - 2024. All rights reserved.