Linux源码阅读笔记-以太网驱动分析

驱动框架

Linux 内核网络设备驱动框架分别为四个模块,分别为网络协议借口模块、网络设备接口模块、设备驱动功能模块和网络设备与媒介模块。具体视图如下:

网络协议接口模块:主要功能

  • 网络接口卡接收和发送数据在 Linux 内核当中处理流程如下:

Linux内核直接把中断分成两个部分:中断上半部和中断下班部

  • 网络协议接口模块:主要功能是给上层协议提供透明的数据包发送和接收接口,dev_queue_xmit() 用于发送数据包,netif_rx()/netif_recvive_skb() 用于接收数据包。不管发送还是接收数据包都会用到 sk_buff 结构体类型(套接字缓冲区),主要用在网络子系统中的各层之间传输数据。

常用数据结构

网络协议接口模块

  1. 套接字缓冲区 sk_buff 结构体类型:
  1. 存储 IP 数据 skb_shared_info 结构体类型(保存 IP 分片数据):

网络设备接口模块

  1. 存储网络设备全部所有信息,包括物理设备和虚拟设备,对应结构体类型为 net_device
  • 网络设备驱动程序只要 net_device 注册,即可实现网络通讯功能。
  1. NAPI 结构体类型

NAPI 数据包信息循环流程如下:

数据接收中断发生->减半接收中断->轮询接收所有数据包或轮询权重耗尽->开启接收中断->数据接收中断发生

常用操作函数

相关推荐
xqqxqxxq14 小时前
Java AI智能P图工具技术笔记
java·人工智能·笔记
Tim风声(网络工程师)14 小时前
光功率计中的红光(光衰测试设备)的使用
运维·网络
ar012314 小时前
AR电路巡检:让电力运维进入智能可视化时代
运维·人工智能·ar
FakeOccupational14 小时前
【电路笔记 PCB】Altium Designer : AD20信号完整性(Signal Integrity)分析+单线路传输分析+串扰分析(暂记)
笔记
2301_7807896616 小时前
云服务器数据会泄露吗?怎么保护云服务器的数据
运维·服务器·tcp/ip·网络安全
闪闪发亮的小星星16 小时前
链路预算相关
笔记
2301_7807896616 小时前
云服务器被黑能恢复吗?云服务器被黑的解决办法
运维·服务器·网络·安全·web安全
淘小白_TXB219616 小时前
头条百家采集改写发布软件用户使用手册
运维·服务器·头条采集·头条号采集·文章采集·头条采集软件
霍霍的袁16 小时前
【初识C语言】预处理笔记(预处理指令、宏定义等)
c语言·笔记·visualstudio
不怕犯错,就怕不做17 小时前
RK3562的CPU如何降频及关闭硬件编解码
linux·驱动开发·嵌入式硬件