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.接收包
硬中断响应后只执行最必要的操作,然后对软中断进行标记,在软中断中执行一些协议处理的更详细的操作。
包数据传递给内核:由驱动程序请求新的缓冲区将收到的包填充在其中
阅读(926) | 评论(0) | 转发(0) |