0
在我們的設備上,我們觀察到IPv6組播地址爲Layer2的IPv6 NS數據包被拒絕。 tcpdump無法捕獲這些數據包,所以我猜這些數據包是由網卡驅動程序丟棄的(糾正我,如果我錯了)。如何在ARM Linux上檢查網卡的寄存器值?
要驗證這一點,我想編寫一個模塊來檢查網卡中某些寄存器的值。由於我不可能重新編譯原始驅動程序,所以我需要一個單獨的模塊來完成這項工作。
有沒有可能這樣做?怎麼樣?
在我們的設備上,我們觀察到IPv6組播地址爲Layer2的IPv6 NS數據包被拒絕。 tcpdump無法捕獲這些數據包,所以我猜這些數據包是由網卡驅動程序丟棄的(糾正我,如果我錯了)。如何在ARM Linux上檢查網卡的寄存器值?
要驗證這一點,我想編寫一個模塊來檢查網卡中某些寄存器的值。由於我不可能重新編譯原始驅動程序,所以我需要一個單獨的模塊來完成這項工作。
有沒有可能這樣做?怎麼樣?
您可以重新編譯驅動程序,將printk
添加到您想要查看的任何內容中。
如果您正在爲ARM目標開發,則可能使用的是Embedded Linux Dev Kit (ELDK),因此您可以在內核源代碼樹中查找驅動程序,修改它並重建內核。或者你可以刪除駐留的驅動程序,並將其編譯爲可加載模塊—,這對於修改驅動程序來說更容易。
爲什麼你不能重新編譯驅動程序?如果你不能重新編譯驅動程序,那麼即使你找到了,你又如何修復這個錯誤? – bdonlan
,因爲我只是想確認並找到當前階段的錯誤 – deepsky