Linux 網絡卡驅動裝置程式設計(1)

2022-09-02 19:51:08 字數 1194 閱讀 6292

一。網絡卡驅動架構分析

1. linux 網路子系統

#系統呼叫介面層

為應用程式提供訪問網路子系統的統一方法。

#協議無關層

提供通用的方法來使用傳輸層協議。

#協議棧的實現

實現具體的網路協議

#裝置無關層

協議與裝置驅動之前通訊的通用介面

#裝置驅動程式

2. 重要資料結構

2.1 網絡卡描述結構

在linux核心中,每個網絡卡都由乙個《net_device》結構來描述,其中的一些重要成員有:

#char name[ifnamsiz]

裝置名,如:eth%d

#unsigned long base_addr

i/o 基位址

#const struct net_device_ops *netdev_ops;

2.2 網絡卡操作集合

說明 : 類似於字元裝置驅動中的file_operations結構,net_device_ops結構記錄了網絡卡所支援的操作。

static const struct net_device_ops dm9000_netdev_ops =

.ndo_open= dm9000_open,

.ndo_stop= dm9000_stop,

.ndo_start_xmit= dm9000_start_xmit,

.ndo_do_ioctl= dm9000_ioctl,

.ndo_validate_addr= eth_validate_addr,

.ndo_set_mac_address= eth_mac_addr,

2.3  網路資料報

linux核心中的每個網路資料報都由乙個套接字緩衝區結構struct sk_buff 描述,

即乙個sk_buff結構就是乙個網路包,指向sk_buff的指標通常被稱做skb。

3. 網絡卡驅動架構分析

裝置驅動的藝術之旅 Linux 網絡卡驅動

from 裝置驅動的藝術之旅 通俗的講網絡卡即網路裝置卡,是計算機連線網路的大門。常見的網絡卡型別 我們最常見的網絡卡就是pci插槽的網絡卡,不管是你的台式電腦,筆記本,亦或是伺服器等都隨處可以見 這裡需要說明的是乙太網控制器內部其實是遊mac 訪問控制器 phy 物理層編碼解碼晶元 組成。所以其實...

Linux裝置驅動程式設計例項

linux系統中,裝置驅動程式是作業系統核心的重要組成部分,在 與硬體裝置之間 建立了標準的抽象介面。通過這個介面,使用者可以像處理普通檔案一樣,對硬體設 備進行開啟 open 關閉 close 讀寫 read write 等操作。通過分析和設計設 備驅動程式,可以深入理解linux系統和進行系統開...

Linux裝置驅動程式設計例項

linux系統中,裝置驅動程式是作業系統核心的重要組成部分,在 與硬體裝置之間建立了標準的抽象介面。通過這個介面,使用者可以像處理普通檔案一樣,對硬體裝置進行開啟 open 關閉 close 讀寫 read write 等操作。通過分析和設計裝置驅動程式,可以深入理解linux系統和進行系統開發。本...