网卡驱动

linux下有三大设备:字符设备,块设备,网卡设备
网卡驱动
回忆:

字符设备的控制流程

网卡驱动
字符设备程序编写流程:

  1. 主设备号
  2. file_operation()
  3. register_chrdev()
  4. 入口函数
  5. 出口函数
块设备的控制流程

1、网卡驱动

1.1网卡驱动程序框架

网卡驱动
网卡驱动程序编写流程:

  1. 分配一个 net_device 结构体
  2. 设置
    2.1 发包函数: hard_start_xmit
    2.2 收到数据时(在中断处理函数里)用netif_rx上报数据
    2.3 其他设置
  3. 注册 register_net
    注意:很多结构体中都包含一个私有数据,是分配结构体时,多分配的一块内存,结构中有一个指针指向私有数据,一般不需要的话就设置为0,就可以了