簡體   English   中英

Linux-Nic的標志配置

[英]Linux - Nic's flags configuration

上下文

Debian 64位。 內核3.18.x

苦苦掙扎地了解如何初始化網絡驅動程序。

我的意思是如何選擇要設置的標志。 我現在在內核中挖了幾天以訓練自己。 卡設置是我唯一想念的地方。

我以Intel 82574為例。 我下載了卡的數據表,看到了很多信息,但沒有有關如何設置硬件的線索。

從哪里開始知道設置什么標志? 數據表對我沒有幫助(我不是很有經驗,但願意學習)。

請給我一個起點,技巧或幫助我了解已經編寫的開源驅動程序中發生的事情的信息。

開發人員如何知道如何初始化其nic? 是的,重新發明了時間來理解

您需要閱讀處理特定NIC的內核模塊的源代碼。

編輯:當然,要開發這樣的模塊,通常只需要使用數據表或應用程序節點中指定的寄存器映射即可; 通常,制造商自己開發Linux驅動程序,因此驅動程序開發人員甚至可能是開發芯片組的人(因為擁有一個可以測試的平台確實非常方便-如果沒有驅動程序之的東西就無法測試硬件,因此您不妨編寫一個適當的驅動程序)。

此外,設備通常帶有代碼示例-沒人會基於他從未見過的IC構建設備。

如果您既無法獲得適當的文檔,也無法獲得資源,則只能進行反向工程-這是一個非常大的領域。

通過將示例與Intel 82574網絡適配器配合使用,Intel提供了用於構建Linux驅動程序的源代碼的zip文件。 該驅動程序與所有驅動程序一樣,都與網絡的OS API掛鈎。

Linux網絡API是linux.org站點上的文檔,並且在流行的Linux站點(如lwn.org)上進行了討論。 以下是鏈接到lwn的有關使用稱為NAPI的網絡API的網絡驅動程序的章節的鏈接。

https://static.lwn.net/images/pdf/LDD3/ch17.pdf

您會在Intel igb驅動程序源代碼中注意到,NAPI net_device數據結構是設置的第一件事。 它將驅動程序注冊到OS。 這樣,操作系統便知道在加載/卸載驅動程序或需要發送/接收數據時要調用哪個igb函數。

igb功能讀取/修改/寫入控制和監視設備的82574存儲器映射寄存器中的必要位。 設備寄存器全部記錄在Intel網站上提供的82574數據表中。 幾乎所有網絡公司(例如Broadcom / Chelsio / Mellanox / Marvell)都是這種情況。

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM