快速业务通道

linux网卡驱动

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-12

Linux网卡驱动 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> NE2000以太网卡的基础上进行的. 只要看懂一块网卡的驱动,那么其他网卡的驱动是类似的,模块的划分也是一致的,只是具体的函数和芯片的操作有区别. 文档中红色的标注都是重点. 自己看代码的时候避免依赖于硬件和芯片的代码,而对整个网络设备管理机制的学习,并关注一般网络设备所共有的东西.

一. 网络设备驱动 网络的物理设备,称为接口(Interface).所有对网络硬件的访问都是通过接口进行的,接口提供了一个对所有类型的硬件一致化的操作集合来处理基本数据的发送和接收. 一个网络接口被看作是一个发送和接收数据包(packets)的实体. 对于每个网络接口,都用一个device的数据结构表示,有关该数据结构的具体内容,将在本文的后面详细介绍,周日的代码中已经将主要的部分注释了. 网络设备是一个物理设备如以太网卡,但软件也可以作为网络设备,如回送设备(loopback). 在内核启动时,通过网络设备驱动程序,将登记存在的网络设备.设备用标准的支持网络的机制来转递收到的数据到相应的网络层. 所有被发送和接收的包都用数据结构sk_buff表示.这是一个具有很好的灵活性的数据结构,可以很容易增加或删除网络协议数据包的首部,是和上层的接口,对于IP层的网络来说,只能识别和区分skbuff. 网络接口的核心用一个device数据结构表示的.网络设备在做数据包发送和接收时,直接通过接口访问. 网络接口是在系统初始化时实时生成的,对于核心支持的但不存在的物理网络设备,将不可能有与之相对应的device结构. 在内核中也存在着一张网络接口管理表dev_base,但与前两张表不同,dev_base是指向device结构的指针,网络设备是通过device数据结构来表示的.dev_base实际上是一条device结构链表的表头,在系统初始化完成以后,系统检测到的网络设备将自动地保存在这张链表中,其中每一个链表单元表示一个存在的物理网络设备.当要发送数据时,网络子系统将根据系统路由表选择相应的网络接口进行数据传输,而当接收到数据包时,通过驱动程序登记的中断服务程序进行数据的接收处理. 网络设备工作原理图: <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> 每一个具体的网络接口都应该有一个名字,以在系统中能唯一标识一个网络接口.通常一个名字仅表明该接口的类型.Linux对网络设备命名有以下约定:(其中N

}

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号