所有網路驅動遵循通用介面,採用物件導向設計:一個裝置即一個物件(device 結構),內含自身資料與方法。方法被呼叫時第一個參數皆為該裝置物件本身(類似 this 指標),可存取自身資料。
交付封包 (dev_queue_xmit()) 接收封包佇列 (netif_rx())
| |
----------------------------------------
| methods & variables |
| initialize, open, close, |
| hard_xmit, interrupt handler, |
| config, resources, status ... |
----------------------------------------
| |
發送至硬體 從硬體接收資料
----------------------------------------
硬體介面層
----------------------------------------
device 變數初始化、系統資源申請skbuff → 呼叫 netif_rx() 傳遞給上層協定處理