Linux 网络设备驱动程序的体系结构如图 16.1 所示,从上到下可以划分为 4 层,依次为网络协议接口
层、网络设备接口层、提供实际功能的设备驱动功能层以及网络设备与媒介层,这 4 层的作用如下所示。
网络协议接口层向网络层协议提供统一的数据包收发接口,不论上层协议为 ARP 还是 IP,都通
过 dev_queue_xmit()函数发送数据,并通过 netif_rx()函数接收数据。这一层的存在使得上层协议
独立于具体的设备。
网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体
net_device,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划
了具体操作硬件的设备驱动功能层的结构。
设备驱动功能层各函数是网络设备接口层 net_device 数据结构的具体成员,是驱使网络设备硬件
完成相应动作的程序,它通过 hard_start_xmit()函数启动发送操作,并通过网络设备上的中断触发
接收操作。
网络设备与媒介层是完成数据包发送和接收的物理实体,包括网络适配器和具体的传输媒介,网
络适配器被设备驱动功能层中的函数物理上驱动。对于 Linux 系统而言,网络设备和媒介都可以
是虚拟的。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !