第四季-專題15-網卡驅動程序設計

專題15-網卡驅動程序設計

第1課-網卡驅動架構分析

 

 

 

l  Linux網絡子系統網絡

 

l  系統調用接口層:爲應用程序提供訪問網絡子系統的統一方法。數據結構

l  協議無關層:提供通用的方法來使用傳輸層協議。架構

l  協議棧的實現:實現具體的網絡協議設計

l  設備無關層:協議與設備驅動以前通訊的通用接口指針

l  設備驅動程序接口

  1. 重要數據結構

在Linux內核中,每一個網卡都由一個net_device結構來描述,其中的一些重要成員有:it

l  char name[IFNAMSIZ],設備名,如:eth%dio

l  unsigned long base_addr,I/O 基地址程序設計

l  const struct net_device_ops *netdev_ops;ioc

  1. 網卡描述結構

相似於字符設備驅動中的file_operations結構,net_device_ops結構記錄了網卡所支持的操做。

static const struct net_device_ops dm9000_netdev_ops =

{

.ndo_open = dm9000_open,

.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,

};

  1. 網卡操做集合

相似於字符設備驅動中的file_operations結構,net_device_ops結構記錄了網卡所支持的操做。

static const struct net_device_ops dm9000_netdev_ops =

{

.ndo_open = dm9000_open,

.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,

};

  1. 網絡數據包

Linux內核中的每一個網絡數據包都由一個套接字緩衝區結構struct sk_buff 描述,即一個sk_buff結構就是一個網絡包,指向sk_buff的指針一般被稱作skb。

 

第2課-迴環網卡驅動設計

 

第3課-網絡子系統深度剖析

第4課-DM9000網卡驅動深度分析

第5課-DM9000網卡驅動實現

相關文章
相關標籤/搜索