1网络设备驱动程序框架可以分为四层

                                                 网络协议接口层
----------------------------------------------------------------------------------------------------------
数据的发送                                                                数据的接收                     
hard_start_xmit(struct sk_buffer *skb sturt *net_device) |      netif_rx(struct sk_buffer *skb sturt *net_device)  
----------------------------------------------------------------------------------------------------------
                                                          ||
                                                          ||
                                                          \/
                                               设备接口层
----------------------------------------------------------------------------------------------------------
                                                  struct  net_device
该结构体上层提供(网络协议接口层)提供发送和接收的函数,是下层(设备驱动层)各种属性和函数操作的集合。
该层主要分为五个部分
1:全局变量及其该结构体各个操作函数的初始化及其对该结构体赋值
 例如,char name[IFNAMESIZE],int (*init)(struct net_device *dev)等,其中init函数是在模块初始化的时候调用,该函数的作用
 就是初始化 struct net_device 中的一些函数 比如网络的打开、关闭、 sbk的发送、接收以ioctl、超时函数等
2:硬件的相关信息
 例如共享内存的起始/结束地址mem_start/mem_end,io的基地址以及设备使用的中断号等等
3:接口信息
 例如设备的接口的硬件类型type,设备的硬件地址dev_addr[MAX_ADDR_LEN]和广播地址brodcast[MAX_ADDR_LEN]等
4:设备的各种操作函数
 例如网络的打开open(struct net_device* dev)/close(struct net_device* dev)/hard_start_xmit(...)/netif_rx(...)
5: 辅助成员
 例如私有数据 void *priv,最后一次发送和接收数据包的时间
----------------------------------------------------------------------------------------------------------
                                                         ||
                                                         ||
                                                         \/
                                                    设备驱动层
----------------------------------------------------------------------------------------------------------
该层主要是实现net_device结构体中的各个函数,如打开和关闭网络函数、发送和接收数据包的函数,超时函数等等
----------------------------------------------------------------------------------------------------------
                                                          ||
                                                          ||
                                                          \/
                                                     设备与媒介
----------------------------------------------------------------------------------------------------------
该层说是设备与媒介,不怎么好听,我个人理解就是真正的硬件操作,比如操作寄存器,
该层主要是操作寄存器,比如从寄存器上读数据发送数据