Chinaunix首页 | 论坛 | 博客
  • 博客访问: 234569
  • 博文数量: 108
  • 博客积分: 3092
  • 博客等级: 中校
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:35
文章分类

全部博文(108)

文章存档

2011年(3)

2010年(43)

2009年(19)

2008年(43)

我的朋友

分类: LINUX

2008-09-24 16:16:43

1.网络设备接口结构


网络设备(dev.c)--------与适配器无关
网络设备接口(net_device)--------特定于适配器的抽象
网络驱动程序(driver.c)--------特定于适配器
网络适配器--------底层硬件

2.网络设备的概念


网络设备提供了一种基于软件协议与网络适配器之间的接口,通过网络设备接口实现了网络实例的实现与特定的适配器类型无关。
net_device中包括了一下几种信息:
网络设备的通用子段(适配器名称,创建的模块。。。)
硬件相关字段(中断号,基地址。。。)
物理层上的数据(最大传输单元,网络设备输出队列最大长度。。。)
网络层上的数据(第三层协议信息。。。)
设备驱动程序方法(初始化,注销,打开,关闭。。。)

3.网络设备的注册与注销


dev_base表示意注册网络设备列表的入口点
注册
系统启动或者加载驱动模块时,搜索适当的网络适配器(完成适配器的初始化),创建net_device将网络设备或者驱动程序的数据填充进去,然后register_netdevice in dev_base
注销
dev->close,删除net_device,unregister_netdevice()

4.网络设备的开启与关闭


开启
ifconfig通过ioctl()为网络设备分配指定的地址
设置相关标志
dev_open
关闭
删除相关标志
停止网络设备工作:dev_close
停止适配器相关操作:dev->stop

5.初始化网络适配器


在驱动程序中完成(而网络设备的初始化是在dev.c).
×系统资源分配(请求中断号等)
×为网络设备的私有数据初始化内存
×对驱动程序相关方法的引用在net_device中设置,这样它们可以被更高层协议使用

6.传输数据包


驱动程序管理环形缓冲区,指向包数据的指针被传递给网络适配器

7.接收包


硬中断响应后只执行最必要的操作,然后对软中断进行标记,在软中断中执行一些协议处理的更详细的操作。
包数据传递给内核:由驱动程序请求新的缓冲区将收到的包填充在其中

 

 

 

 

阅读(918) | 评论(0) | 转发(0) |
0

上一篇:[c++]运算符重载

下一篇:【c++】动态对象

给主人留下些什么吧!~~