免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9070 | 回复: 9

[内核入门] hard_start_xmit和dev_queue_xmit的一处疑问。 [复制链接]

论坛徽章:
0
发表于 2012-06-11 14:08 |显示全部楼层
最近看无限驱动一些不解的地方,如下
首先在__ath_attach定义:  dev->hard_start_xmit = ath_netdev_hardstart;
查看ath_netdev_hardstart代码,最终会调用dev_queue_xmit函数,而dev_queue_xmit又会调用ndo_start_xmit,ndo_start_xmit同样定义为
ath_netdev_hardstart,如下:
static const struct net_device_ops athdev_net_ops = {
    .ndo_open    = ath_netdev_open,
    .ndo_stop    = ath_netdev_stop,
    .ndo_start_xmit = ath_netdev_hardstart,
    .ndo_set_mac_address = ath_netdev_set_macaddr,
    .ndo_tx_timeout = ath_netdev_tx_timeout,
    .ndo_get_stats = ath_getstats,
    .ndo_change_mtu = ath_change_mtu,
    .ndo_set_multicast_list = ath_netdev_set_mcast_list,
    .ndo_do_ioctl = ath_ioctl,
};
想请教下这里为什么要再执行一遍ath_netdev_hardstart函数?什么时候会最终结束呢?  洗耳恭听。

论坛徽章:
0
发表于 2012-06-11 15:35 |显示全部楼层
顶顶。。。。。  求指导啊。。。

论坛徽章:
0
发表于 2012-06-11 16:05 |显示全部楼层
回复 2# 熄灭的太yang


    **代码?

论坛徽章:
0
发表于 2012-06-11 17:55 |显示全部楼层
[/b]回复 [url=forum.php?mod=redirect&goto=findpost&pid=&ptid=3752157]3#[/url] [color=Olive]zhenggn123[/color] [/b]
代码量太大了,这个不是什么机制吗?我在网上看过一篇文章,有如下解释,但是我不明白是如何更换dev,确认真实的网卡


SOSO工具栏截屏未命名.png

   

论坛徽章:
0
发表于 2012-06-11 17:57 |显示全部楼层
回复 3# zhenggn123
代码量太大了,这个不是什么机制吗?我在网上看过一篇文章,有如下解释,但是我不明白是如何更换dev,确认真实的网卡
SOSO工具栏截屏未命名.png

   

论坛徽章:
0
发表于 2012-06-11 18:10 |显示全部楼层
回复 5# 熄灭的太yang
linux内核常规的处理方法。首先 let skb->dev = 虚拟设备。调用虚拟设备->hard_start_xmit  在其中 let skb->dev = 真实设备 dev_queue_xmit(skb) 调用真实设备的->hard_start_xmit

   

论坛徽章:
0
发表于 2012-06-11 18:20 |显示全部楼层
回复 6# zhenggn123
先谢谢这位兄弟了。

  那么是不是就是说上面图中的那个循环其实只是循环两次,一次是虚拟设备,第二次就是真实设备。还有一点究竟是先调用hard_start_xmit还是dev_queue_xmit呢?我之前接触的信息都是发包时候先调用dev_queue_xmit,然后dev_queue_xmit会调用hard_start_xmit(之前版本都是掉hard_start_xmit吧,这里2.6.34版本调用的是ndo_start_xmit),按刚您说的意思是先hard_start_xmit,那究竟是怎么处理的了,还请指点,,谢谢!


   

论坛徽章:
0
发表于 2012-06-11 18:32 |显示全部楼层
回复 7# 熄灭的太yang


    恩。先调用dev_queue_xmit 再device->hard_start_xmit,我看的是前面的内核版本,比你老。

论坛徽章:
0
发表于 2012-06-11 22:20 |显示全部楼层
回复 8# zhenggn123
非常感谢,清楚多了。



   

论坛徽章:
0
发表于 2012-06-11 22:21 |显示全部楼层
回复 8# zhenggn123
非常感谢,清楚多了。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP