linux网络驱动体系结构

来源:互联网 发布:史蒂夫纳什生涯数据 编辑:程序博客网 时间:2024/05/21 14:50

在分析网卡驱动程序之前,我们先来了解一下linux网络驱动体系结构:

 

linux网络驱动体系结构 - 小白 - 小白的博客

 我们来说一下流程:当网络设备驱动加载时,首先在入口函数里面完成一些初始化工作,这主要就是对net_device结构体的设置,以及跟硬件相关的设置,其中发包和收包函数比较重要。

ifconfig xxx.xxx.xxx.xxx up来配置网卡的时候,会调用net_device结构体的open函数。

当发送数据包时,协议接口层的dev_queue_xmit会调用net_device结构体的hard_start_xmit函数来发送数据包,数据包被放在sk_buff结构体中,先被发送到发送缓冲区,然后通过设置相应的发送位将数据发送出去。

接受数据的时候,当数据到达后会产生一个中断,在中断处理函数中来处理收到的数据包,但是中断处理函数中对数据包只是做一个简单的处理,接着就把数据包上报给网络协议层,网络协议层的netif_rx会对接受到的数据包做进一步的处理。