如何在ARM Linux上查看网卡的寄存器值?

发布于 2024-12-06 04:19:53 字数 196 浏览 1 评论 0原文

在我们的设备上,我们观察到具有第 2 层组播地址的 IPv6 NS 数据包被丢弃。 tcpdump 无法捕获这些数据包,因此我猜测这些数据包是由网卡驱动程序丢弃的(如果我错了,请纠正我)。

为了验证这一点,我想编写一个模块来检查网卡中一些寄存器的值。由于我不可能重新编译原始驱动程序,因此我需要一个单独的模块来完成这项工作。

可以这样做吗?如何?

On our device, we observed that the IPv6 NS packet with multicast address of Layer2 were droped. The tcpdump cannot capture these packet so I guess the packets were dropped by the network card driver(correct me if I am wrong).

To verify this, I want to write a module to check the value of some registers in the network card. Since it is not possible for me to recompile the original driver I need a separate module to finish this job.

Is it possible to do that? How?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

So尛奶瓶 2024-12-13 04:19:53

您可以重新编译驱动程序,添加 printk 以及您想要看到的任何内容。

如果您正在针对 ARM 目标进行开发,则可能正在使用 嵌入式 Linux 开发套件 (ELDK) ,因此您可以在内核源代码树中查找驱动程序,修改它,然后重建内核。或者,您可以删除驻留驱动程序并将其编译为可加载模块 - 这对于修补驱动程序要容易得多。

You can recompile the driver, adding printk with whatever it is you want to see.

If you are developing for an ARM target, it is possible you are using the Embedded Linux Dev Kit (ELDK), so you could look in the kernel source tree for the driver, modify it, and rebuild the kernel. Or you could remove the resident driver and compile it as a loadable module—which is a lot easier for tinkering with a driver.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文