为什么无法刷新 TX 的 DMA 队列?

为什么无法刷新 TX 的 DMA 队列?

我只是想知道,我经常收到来自 wlan 看门狗的警告,涉及 DMA TX 队列的一些问题

[  710.984380] ieee80211 phy0: rt2x00usb_watchdog_tx_dma: Warning - TX queue 2 DMA timed out, invoke forced forced reset
[  711.996050] ieee80211 phy0: rt2x00usb_watchdog_tx_dma: Warning - TX queue 2 DMA timed out, invoke forced forced reset

到目前为止似乎并没有真正造成任何问题,但据我了解:

DMA 代表直接内存访问,因此,卡必须在内存中写入要传输的信息的队列。

所以这个警告实际上只是告诉我,在某些时候系统必须丢弃该队列来创建一个新队列,但它不能。因此,强制复位

你认为为什么会这样?我的意思是,如果它是直接内存,我能想到无法释放它的唯一原因是其他一些进程正在读取或写入同一地址。

是否有一个过程可以读出我要发送的内容?为什么?哪一个?

答案1

该警告描述了症状(驱动程序检测到不应该发生的超时状态),但是原因是驱动程序/硬件行为和/或计时交互中的一些错误,可能与操作系统的其余部分有关。您需要阅读驱动程序代码,详细了解硬件,并进行一些认真的调试以找出实际问题所在。 (如果你能做到这一点,你就不会问这个问题了)。

您能做的最好的事情就是向驱动程序开发人员提交错误,但这可能是一项艰巨的任务。

网络层将重新请求被丢弃的数据包,因此该错误不太可能破坏某些内容。

相关内容