网络驱动之net_device结构体
在Linux系统中,网络设备都被抽象为struct net_device结构体。它是网络设备硬件与上层协议之间联系的接口,了解它对编写网络驱动程序非常有益,所以本文将着手简要介绍linux-2.6.38.8/include/linux/netdevice.h文件中struct net_device结构体的所有成员(没有按照它们定义的顺序)。
1、网络设备相关信息
(1)、设备名
1 2 |
|
在Linux系统中,每个网络设备都有一个唯一的设备名(如eth0,字母部分代表网络设备的类型,数字部分代表此类网络设备的数量)。
(2)、电源管理服务质量( power managementQuality Of Service)
1 |
|
用于Wi-Fi和千兆以太网,可以帮助控制网络的延迟和带宽的需求,以达到在可用的前提下省电的目的。
(3)、硬件信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
(4)、标识符
1 2 3 |
|
(5)、分配套接字缓冲区时预留空间的长度
1 2 |
|
(6)、在sysfs文件系统中输出网络设备信息
1 2 |
|
(7)、网络设备相关链表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
(8)、混杂模式
1 2 3 4 |
|
(9)、网络层协议特定数据
1 2 3 4 5 6 7 8 9 10 |
|
(10)、设备硬件功能特性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
(11)、分配net_device结构体及其私有数据时为对齐所需的填充位数目
1 |
|
(12)、其他信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
2、网络设备的运行状态
(1)、网络设备物理上的工作状态
1 2 3 4 5 6 7 8 9 10 |
|
(2)、网络设备通信模式或状态
1 2 3 4 |
|
(3)、统计信息
1 2 3 |
|
(4)、RFC2863协议相关
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
(5)、传输超时
1 2 3 4 5 6 7 8 |
|
(6)、设备注册/注销状态机
1 2 3 4 5 6 7 |
|
(7)、引用计数
1 |
|
(8)、分组状态
1 |
|
(9)、RTNL初始化状态
1 2 3 4 |
|
3、网络设备的操作函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
4、数据包的收发队列
(1)、接收队列
1 2 3 4 5 6 7 8 |
|
(2)、发送队列
1 2 3 4 5 6 7 8 |
|
网络驱动之net_device结构体相关推荐
- 获取另一个驱动的设备结构体_《rt-thread驱动框架分析》-i2c驱动
驱动分析 I2C设备驱动框架图: 我们先RT-Thread的I2C框架图(这是我自己理解的框架图,如果不对的地方,请指出): 上图是我分析的RTT的I2C框架图.主要分为三层,驱动层-核心层-设备层. ...
- 获取另一个驱动的设备结构体_Linux 驱动开发 / 设备模型快速入门
背 景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版 ...
- 【驱动】使用结构体 file_operations封装驱动设备的操作 | 结构体初始化
-----第一部分----- 最近学习到了Linux驱动章节的课程,对设备的对应驱动的注册有些困惑,看了下发现是把设备的所有操作方法封装到结构体 file_operations 中,这个结构体为所有的 ...
- 获取另一个驱动的设备结构体_字符设备驱动的另一种写法
字符设备驱动的另一种写法 在Linux2.6内核中,使用cdev结构体描述一个字符设备; cdev结构体(include/linux/cdev.h)定义如下: struct cdev { struct ...
- 82599网卡驱动rx descriptor结构体分析
82599 datasheet: 7.1.6 节 大概位于314页 对驱动的理解关键是对数据结构的理解. The 82599 posts receive packets into data b ...
- linux sockaddr结构体,linux网络编程笔记 sockaddr_in结构体[转]
struct sockaddr { unsigned short sa_family; char sa_data[14]; }; 此数据结构用做bind.connect.recvfrom.sendto ...
- linux按键驱动中的结构体,linux 驱动之input子系统(gpio-keys)实现
1.概述 Gpio-keys 是基于input子系统实现的一个通用按键驱动,该驱动也符合linux驱动实现模型,即driver和device分离模型.一般按键驱动,都是基于gpio-keys进行开发的 ...
- linux sockaddr结构体,网络编程之sockaddr_ll结构体 | 人人学技术
sockaddr_ll, 源文件为,结构如下: struct sockaddr_ll { unsigned short int sll_family; /* 一般为AF_PACKET */ unsig ...
- Linux 网络驱动实验(有线)
目录 嵌入式网络简介 嵌入式下的网络硬件接口 MII/RMII 接口 MDIO 接口 RJ45 接口 I.MX6ULL ENET 接口简介 PHY 芯片详解 PHY 基础知识简介 LAN8720A 详 ...
最新文章
- python字符串写入excel-python-xlwt写入excel详解
- windows(xshell)免密码登录
- 图解JVM垃圾回收算法
- Universe Naming Rule
- [转] 更新Flash CS6发布设置的目标播放器版本
- 音视频技术开发周刊 | 240
- 代码review工具:Review Board
- opencv-api getPerspectiveTransform
- Xcode:PhoneGap 2.5.0项目创建方法
- java.lang.IllegalArgumentException: parameter must be a descendant of this view
- gd公文文件转换成pdf格式
- LM317调压电阻计算
- is_enabled:selenium中判断元素是否可以使用;is_selected()/is_displayed()
- 《万人如海一身藏》书摘
- 数模算法 — 蒙特卡罗算法及Matlab案例
- PHP注册登录系统(一)-极简
- Spring cloud实现FeignClient指定Zone调用
- Kotlin高仿微信-项目实践58篇
- 大量的Oracle数据库视频教程提供下载
- findfirst, findnext
热门文章
- 非线性优化库NLopt简介
- Date时间里的GMT是什么意思
- Exp9 Web安全基础 20164302 王一帆
- postgresql 的json 和jsonb 的使用
- Mac Navicat连接MySQL8.0.11出错:2003 - Can't connect to MySQL server on ……(61 Connection refused)
- H. Holy Grail(The Preliminary Contest for ICPC Asia Nanjing 2019题解)
- Codesys电子凸轮表的规划与凸轮曲线的拟合
- 湖南信息学院大一C语言考试,2003级信息学院《C语言程序设计》考试试题
- ACCESS备件库管理数据库
- javafx 教程_何时使用JavaFX代替HTML