gpt4 book ai didi

linux - RealTek 8168(r8169 Linux 驱动程序)- Rx 描述符环混淆

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:18 28 4
gpt4 key购买 nike

我正在研究控制系统,其中 NIC 中断用作触发器。这对于循环时间大于 3 微秒的情况非常有效。现在我想做一些性能测试并测量传输时间,分别是两次中断之间的最短时间。

发送方正在尽快发送 60 字节的数据包。接收器应为每个数据包生成一个中断。我正在使用 256 个数据包进行测试,即 Rx 描述符环的大小。测试期间不会处理数据包数据。只有中断很有趣。

问题是,接收速度非常快,两个中断之间的时间不到 1 微秒,但仅限于大约 70 个中断/描述符。然后NIC设置RDU(Rx描述符不可用)位并在到达环路末端之前停止接收。令人困惑的是,当我将 Rx 描述符环的大小增加到 2048(例如)时,中断数量也会增加(大约 800)。我不明白这种行为。我认为他应该在 70 次中断后再次停止。

这似乎是一个时间问题,但为什么呢?我忽略了一些东西,但是什么?有人可以帮助我吗?

提前致谢!

最佳答案

我认为由于 RX 数据包速率较大,您的接收中断丢失了。不要计算中断来查看收到了多少数据包。依赖于接收描述符的“自己”位。仅当您到达环的末端时才会设置接收描述符不可用,除非您在编程 RX 描述符时犯了一些错误(例如忘记设置所有权位)因此,如果您的 RX 环有 256 个描述符,我认为您应该接收 256 个数据包,而无需回收 RX 描述符。如果您怀疑是否已到达环结束,请尝试仅在最后一个 RX 描述符的完成位上设置中断。这样,您在环结束时仅收到一个中断。

关于linux - RealTek 8168(r8169 Linux 驱动程序)- Rx 描述符环混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38268478/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com