网络驱动程序中的链接更改是啥意思这意味着 TX 到 RX 因此存在链接更改或者它的速度像数据传输 phydev->speed 还是啥

Posted

技术标签:

【中文标题】网络驱动程序中的链接更改是啥意思这意味着 TX 到 RX 因此存在链接更改或者它的速度像数据传输 phydev->speed 还是啥【英文标题】:What meant by link change in network driver does this means TX to RX so there is link change or is it speed like data transfer phydev->speed or what网络驱动程序中的链接更改是什么意思这意味着 TX 到 RX 因此存在链接更改或者它的速度像数据传输 phydev->speed 还是什么 【发布时间】:2021-12-21 21:40:29 【问题描述】:

为什么驱动程序会引发 PHY 中断。这是内核的工作吗,为什么内核的驱动程序部分会像这样引发 PHY 中断

   u32 status = //read registers
   if (status & LinkChg_Status)
    phy_mac_interrupt(tp->phydev);

以上代码在request_irq(pci_irq_vector(pdev, 0), rtl8169_interrupt,中断上下文中

在 kernel.org 上它说

Sometime during startup, the network driver needs to establish a connection 

betweenthe PHY device, and the network device. At this time, the PHY's bus and   
drivers need to all have been loaded, so it is ready for the connection. At this 
point, there are several ways to connect to the PHY:

    The PAL handles everything, and only calls the network driver when the link state
    changes, so it can react.

在上述声明中,link state changes 可能是什么?这是否意味着在一种状态下它的 TX 和在链路更改为 RX 时?

【问题讨论】:

以上代码来自realTek R8169驱动 链路状态改变是指物理连接改变状态,例如:当您拔下物理电缆时,链路状态会发生变化(即链路断开),而当您插入电缆时,链路会重新建立(即链路接通)。根据物理连接的类型,链接可以处于更多状态,而不仅仅是向上和向下。 根据RTL8169 datasheet,LinkChg中断发生在“Link Status Change”上,而在PHYStatus寄存器中有一个位叫做“LinkSts”=Link Status,表示链路是up还是down .所以我假设当链接上升或下降时中断会触发。 @Klas-Kenny 你能从数据表中解释一下吗,我认为你指向这个Packet Underrun/Link Change: This bit is set to 1 when CAPR is written but the Rx buffer is empty, or when link status is changed. CAPR 没有记录在可以轻松找到的数据表中。您需要的是芯片组的编程指南。有几个 Realtek 编程指南,它们都非常相似,例如 RTL8100 编程指南。在那里您还可以找到有关 CAPR 的一些信息。 【参考方案1】:

来自它所说的数据表

数据包欠载/链路更改:当 CAPR 被设置为 1 写入但 Rx 缓冲区为空,或链接状态更改时。

【讨论】:

以上是关于网络驱动程序中的链接更改是啥意思这意味着 TX 到 RX 因此存在链接更改或者它的速度像数据传输 phydev->speed 还是啥的主要内容,如果未能解决你的问题,请参考以下文章

“增量负载”是啥意思?

UDP是啥?

vue中的路由是啥意思

wizard是啥意思

stm32的AFIO是啥意思

spring中<tx:advice></tx:advice>是啥意思?作用是啥?谁能简单说下