linux驱动问题讲解--dev_queue_xmit
来源:互联网 发布:淘宝卖游戏账号 编辑:程序博客网 时间:2024/06/05 07:48
1. 凡是调用dev_queue_xmit的对象都是一个网络设备。
解答:这个思路是错误的。因为dev_queue_xmit是有网络设备无关层调用的函数,调用对象调用该函数之后,函数会判断skb中的dev字段,根据这个字段指示的设备调用该设备的发送函数hard_start_xmit来对skb进行转发。
2. 凡是由dev_queue_xmit调用hard_start_xmit发送出来的帧都是封装好的以太帧。
解答:这个思路还是有问题,因为对于是否将skb进一步封装成为以太帧的形式,其实是由hard_start_smit函数的具体实现来决定的,如果在hard_start_xmit中调用了hard_header函数,那么就会将skb进一步封装,如果没有调用,那么就没有将skb进行进一步封装。也就是说,上层在需要发送skb的时候会选择调用dev_queue_xmit,那么至于下层是怎么传递该skb的,上层根本就不用关心,这就是所谓的各层的独立性原理。所以对skb具体的发送处理过程,可以由下层网络接口的hard_queue_xmit来处理。比如说上层需要发送一个广播帧,那么它就将skb->pkt_type赋值为PACKET_BROADCAST,然后调用dev_queue_xmit将其发送出去之后就不管下层是否将这个广播帧真的放到网络中进行广播。而下层如果是一个与上层绑定好了的虚拟网络设备的话,它可以在自己的hard_start_xmit中对skb->pkt_type字段为PACKET_BROADCAST的skb进行特定的处理,这里指的特定就是说,不一定非要将这个skb放到网络中进行广播。
3. 对于注册的协议类型。
解答:注册协议类型是由具有该协议类型的本层来注册的,当netif_rx判断是某层注册的协议时,则会主动调用该协议的处理函数来对接收的帧进行处理。
解答:这个思路是错误的。因为dev_queue_xmit是有网络设备无关层调用的函数,调用对象调用该函数之后,函数会判断skb中的dev字段,根据这个字段指示的设备调用该设备的发送函数hard_start_xmit来对skb进行转发。
2. 凡是由dev_queue_xmit调用hard_start_xmit发送出来的帧都是封装好的以太帧。
解答:这个思路还是有问题,因为对于是否将skb进一步封装成为以太帧的形式,其实是由hard_start_smit函数的具体实现来决定的,如果在hard_start_xmit中调用了hard_header函数,那么就会将skb进一步封装,如果没有调用,那么就没有将skb进行进一步封装。也就是说,上层在需要发送skb的时候会选择调用dev_queue_xmit,那么至于下层是怎么传递该skb的,上层根本就不用关心,这就是所谓的各层的独立性原理。所以对skb具体的发送处理过程,可以由下层网络接口的hard_queue_xmit来处理。比如说上层需要发送一个广播帧,那么它就将skb->pkt_type赋值为PACKET_BROADCAST,然后调用dev_queue_xmit将其发送出去之后就不管下层是否将这个广播帧真的放到网络中进行广播。而下层如果是一个与上层绑定好了的虚拟网络设备的话,它可以在自己的hard_start_xmit中对skb->pkt_type字段为PACKET_BROADCAST的skb进行特定的处理,这里指的特定就是说,不一定非要将这个skb放到网络中进行广播。
3. 对于注册的协议类型。
解答:注册协议类型是由具有该协议类型的本层来注册的,当netif_rx判断是某层注册的协议时,则会主动调用该协议的处理函数来对接收的帧进行处理。
- linux驱动问题讲解--dev_queue_xmit
- Linux发送函数dev_queue_xmit
- Linux发送函数dev_queue_xmit分析
- Linux发送函数dev_queue_xmit分析
- Linux发送函数dev_queue_xmit分析
- Linux FB 驱动讲解
- linux i2c驱动讲解
- Linux发送函数dev_queue_xmit分析&…
- Linux发送函数dev_queue_xmit分析&…
- Linux发送函数dev_queue_xmit分析 --转
- linux s3c2410触摸屏驱动讲解
- Linux的I2C驱动讲解
- Linux内核构造数据包并发送(二)(dev_queue_xmit方式)
- Linux内核构造数据包并发送(二)(dev_queue_xmit方式)
- Linux网络之设备接口层:发送数据包流程dev_queue_xmit
- Linux网络之设备接口层:发送数据包流程dev_queue_xmit
- linux-3.0中的触摸屏驱动讲解
- linux字符设备驱动入门模版讲解
- vim 查找 忽略大小写
- java 单例模式例子及应用
- linux系统资源负载过高自动重启apache的shell脚本
- 深入浅出UML类图
- 利用Socket.Send发送信息、Socket.SendFile传输文件
- linux驱动问题讲解--dev_queue_xmit
- C++实现“单例模式”的两种方法
- windows 快捷命令
- 读取数据到结构体数组
- Hibernate初学之优缺点
- 快速进入文件夹的命令提示符窗口
- MyEclipse6.5安装/卸载SVN插件方法 .
- iOS即时语音聊天技术实践
- eclipse智能提示