linux网络驱动体系结构

在分析网卡驱动程序之前,我们先来了解一下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会对接受到的数据包做进一步的处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值