- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux驱动开发网络.pdf
The successs road
Linux设备驱动高级开发
远见品质 今天的内容
1. OSI 网络参考模型
2. 套结字(socket )简介
3. 套结字缓冲区(sk_buff)
4. net_device结构分析
5. 数据包传送与接收
6. 网络驱动的中断处理
7. 以太网MAC地址解析
远见品质 Linux 网络设备
网络设备,又叫网络接口是Linux第
三类标准设备
网络设备和块设备类似,在内核的
特定数据结构中注册自己
当发生网络数据交换时,网络设备
驱动程序注册的方法将被内核调用
网络设备不会在/dev下存在一个设备
入口,它使用保留的内部设备名
远见品质 网络设备的特点
网络设备异步的接收外来的数据包,有别
于其他设备
网络设备主动的“请求”将硬件获得的数
据包压入内核,而其他设备例如块设备被
“请求”向内核发送缓冲区
网络设备同时要执行大量的管理任务
设置地址
修改传输参数
维护流量和流量控制
错误统计和报告
网络子系统是完全与协议无关的,网络驱
动程序与内核其余部分之间的每次交互处
理的都是一个网络数据包
远见品质 网络设备驱动的装载
网络驱动程序在装载时要申请需要的资源
与字符设备或块设备不同的是网络设备没有主设
备号和次设备号的概念
网络设备驱动程序对于每个检测到的接口向全局
的网络设备链表中插入一个net_device结构
struct net_device * alloc_netdev(…)
struct net_device * alloc_etherdev(…)
该结构中需要实现一个init方法,这个方法用来
对net_device结构自身进行初始化。即侦测硬件
设备,用正确的值来填充net_device结构中的各
项
ether_setup(struct net_device * dev)
如果初始化失败,那么该结构不会被连接到网络
设备链表中
远见品质 初始化每个设备
设备探测工作在init方法中进行,一
般调用一个称之为probe方法的函数
初始化的主要工作是填充该设备的
dev结构,我们可以调用内核提供的
ether_setup方法来设置一些以太网默
认的设置
当我们需要卸载网络驱动程序时
文档评论(0)