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 数据包信息循环流程如下:

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

常用操作函数

相关推荐
r i c k几秒前
数据库系统学习笔记
数据库·笔记·学习
wVelpro5 分钟前
如何在Pycharm 2025.3 版本实现虚拟环境“Make available to all projects”
linux·ide·pycharm
程序员老舅42 分钟前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华1 小时前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
shandianchengzi1 小时前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
Yeats_Liao1 小时前
评估体系构建:基于自动化指标与人工打分的双重验证
运维·人工智能·深度学习·算法·机器学习·自动化
浅念-1 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
爱吃生蚝的于勒1 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森2 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
tq10862 小时前
Skills 的问题与解决方案
笔记