例項解讀 linux 網絡卡驅動

2021-07-24 00:11:42 字數 1021 閱讀 3583

13,引數設定 

在驅動程式裡還提供一些方法供系統對裝置的引數進行設定和讀取資訊。一般只有超級使用者(root)許可權才能對裝置引數進行設定。設定方法有: 

tg3_set_mac_addr (dev->set_mac_address) 

當使用者呼叫ioctl型別為siocsifhwaddr時是要設定這個裝置的mac位址。一般對mac位址的設定沒有太大意義的。 

dev->set_config() 

當使用者呼叫ioctl時型別為siocsifmap時,系統會呼叫驅動程式的set_config方法 

使用者會傳遞乙個ifmap結構包含需要的i/o、中斷等引數。 

總結: 

所有的linux網路驅動程式遵循通用的介面。

設計時採用的是物件導向的方法。乙個裝置就是乙個物件(net_device 結構),它內部有自己的資料和方法。乙個網路裝置最基本的方法有初始化,傳送和接收。 

linux網路驅動程式的體系結構可以劃分為四層: 

網路協議介面,網路裝置介面,裝置驅動功能,網路裝置和網路媒介層 

網路驅動程式,最主要的工作就是完成裝置驅動功能層。

在linux中所有網路裝置都抽象為乙個介面,這個介面提供了對所有網路裝置的操作集合。

由資料結構struct net_device來表示網路裝置在核心中的運**況,即網路裝置介面。

它既包括純軟體網路裝置介面,如環路(loopback),也包括硬體網路裝置介面,如乙太網卡。

而由以dev_base為頭指標的裝置鍊錶來集體管理所有網路裝置,該裝置鍊錶中的每個元素代表乙個網路裝置介面。資料結構 net_device中有很多供系統訪問和協議層呼叫的裝置方法,包括初始化,開啟和關閉網路裝置的open和stop函式,處理資料報傳送的 hard_start_xmit函式,以及中斷處理函式等。

網路裝置在linux裡做專門的處理。linux的網路系統主要是基於bsd unix的socket機制。在系統和驅動程式之間定義有專門的資料結構(sk_buff)進行資料的傳遞。系統裡支援對傳送資料和接收資料的快取,提供流量控制機制,提供對多協議的支援。

例項解讀 linux 網絡卡驅動

正文 1,驅動模組的載入和解除安裝 如果網路裝置 包括wireless 是pci規範的,則先是向核心註冊該pci裝置 pci register driver 然後由pci driver資料結構中的probe函式指標所指向的偵測函式來初始化該pci裝置,並且同時註冊和初始化該網路裝置。如果網路裝置 包...

例項解讀網絡卡驅動

tg3 gbit nic driver analysis 1,驅動模組的載入和解除安裝 如果網路裝置 包括wireless 是pci規範的,則先是向核心註冊該pci裝置 pci register driver 然後由pci driver資料結構中的probe函式指標所指向的偵測函式來初始化該pci裝...

例項解讀網絡卡驅動 Tg3 Gbit NIC

例項解讀網絡卡驅動 tg3 gbit nic tg3 gbit nic driver analysis 1,驅動模組的載入和解除安裝 如果網路裝置 包括 wireless 是pci 規範的,則先是向核心註冊該 pci裝置 pci register driver 然後由 pci driver 資料結構...