kernel - 我的无线接口似乎缓冲传入的消息并定期接收它们
问题描述
我的无线网络接口有问题。如果我尝试发送数据包,它似乎工作正常,当我必须接收某些东西时,麻烦就开始了。这就像它缓冲传入的数据包并且在使用 IF 发送某些东西之前不会将它们传递给上层,此时所有接收到的数据包都被处理。 这是我的wireshark的截图。如您所见,有几组传入数据包同时处理(在示例中它们是 CAMv1 数据包,但它适用于任何其他类型的数据包)
另一个奇怪的行为是,如果我尝试在该接口上 ping 我自己的地址,我会收到所有 ICMP 回复,但每隔几秒以 4-5-6 的随机组。
我的第一个猜测是它与一些电源管理设置有关,但即使禁用它,问题也没有解决。
接下来,我查看了中断日志,发现在该接口上从未调用过发送或接收中断:
还有cat /sys/kernel/debug/ieee80211/phy0/ath9k/interrupt的输出
所以看起来传输和接收是由一些轮询机制来处理的。经过一番研究,我发现了内核配置CONFIG_NET_RX_BUSY_POLL,我试图禁用它但运气不好,因为我不能通过menuconfig做到这一点,如果我尝试编辑 kernel/net/Kconfig 以手动禁用它(CONFIG_NET_RX_BUSY_POLL=n)由于内核恐慌,生成的图像无法启动,所以我想我应该满足一些依赖关系。
我也尝试过这个,但 menuconfig 和 .config 文件将 CONFIG_NET_RX_BUSY_POLL 保持为“是”。我也尝试从 menuconfig 编辑 PREEMPT_RT_FULL但我也不能,可能是因为我有不同的内核版本。
到目前为止,我已经走了多远,有没有人遇到相同或相似的问题,或者可以弄清楚我可以尝试什么?关注我的环境细节
板:基于 variscite mx8m 的定制板(https://variwiki.com/index.php?title=Debian_Build_Release&release=RELEASE_BUSTER_V2.3_DART-MX8M)
收发器:Compex WLE200NX、Atheros AR9280 芯片组,由 ath9k 驱动程序处理
操作系统和内核:Debian 10,内核 4.14.78
解决方案
推荐阅读
- android - 我的 AndroidTest 包中不存在包
- c++ - 使用 QObject 作为类成员并将该成员用作连接的上下文是否安全?
- asp.net-mvc - 是否可以使用 ADAL 或其他方式登录 Office 365 Web 而无需重定向到 Microsoft 登录?
- c# - 当使用图像作为按钮时,如何在检测到点击时忽略透明部分
- python - 读取csv文件最后一行的第二列
- linux - mv:在 shell 脚本中使用 mv 时缺少文件操作数,但在终端中没有
- swift - 如何在 tableView 中删除?
- git - 提交到新的 gitHub 存储库而不显示本地提交
- porting - 将 xcos 从 5.5.2 移植到 6.0.1
- python - 使用 LSTM 在 PPO + ICM 中分散损失