免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: markdong_007
打印 上一主题 下一主题

dev_queue_xmit和rtl8139_start_xmit函数数据包数目不一致 [复制链接]

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
11 [报告]
发表于 2012-03-27 07:52 |只看该作者
回复 10# markdong_007
你的内核是不是大于2.6.18?
如果是的话,貌似知道原因了。

   

论坛徽章:
0
12 [报告]
发表于 2012-03-27 12:18 |只看该作者
回复 11# 瀚海书香

内核版本是2.6.38   请问是什么原因呀?


   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
13 [报告]
发表于 2012-03-27 13:26 |只看该作者
回复 12# markdong_007
我猜测是GSO的问题。你把网卡的gso和tso关掉,再测试一下看看结果。

   

论坛徽章:
0
14 [报告]
发表于 2012-03-27 13:48 |只看该作者
回复 13# 瀚海书香

请问怎么关掉呀?  指点我一下  谢谢


   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
15 [报告]
发表于 2012-03-27 14:31 |只看该作者
本帖最后由 瀚海书香 于 2012-03-27 14:50 编辑

回复 14# markdong_007
ethtool -K eth0 gso off
ethtool -K eth0 tso off

论坛徽章:
0
16 [报告]
发表于 2012-03-27 16:10 |只看该作者
回复 15# 瀚海书香

谢谢 我试试再看看


   

论坛徽章:
0
17 [报告]
发表于 2012-05-21 13:05 |只看该作者
回复 15# 瀚海书香


hi  前辈  你好  我在统计dev_queue_xmit和rtl8139_start_xmit函数中的数据包数目,发现他们的值仍然不一致,上次你跟我说过是gso的问题后,我把gso关掉了,现在结果还是不一样,大约差一倍多的数目,前辈,请问你晓得是什么原因啊  谢谢


   

论坛徽章:
0
18 [报告]
发表于 2012-05-21 14:13 |只看该作者
本帖最后由 honkiko 于 2012-05-21 15:05 编辑

回复 17# markdong_007

你使用了pkt_gen发包吗? pkt_gen直接调 dev->netdev_ops->ndo_start_xmit()

还有一个可能,一个skb调用一次dev_queue_xmit, 会被加入到tx queue。然后在__qdisc_run()里面会循环调用sch_direct_xmit()。 关键在这个sch_direct_xmit函数里面:
如果dev_hard_start_xmit()的返回值不是NETDEV_TX_OK (而是NETDEV_TX_LOCKED或NETDEV_TX_BUSY), 会调用dev_requeue_skb()把这个skb重新加入tx queue,然后下次还会走到dev_hard_start_xmit()。
所以,如果你的ndo_start_xmit经常返回NETDEV_TX_LOCKED或NETDEV_TX_BUSY的话,就会造成两个counter的不一致。
你可以在rtl8139_start_xmit函数里专门加一个发送失败(NETDEV_TX_LOCKED或NETDEV_TX_BUSY)的counter, 然后看看这个counter的值,是不是就是dev_queue_xmit跟rtl8139_start_xmit调用次数之间的差别。

论坛徽章:
0
19 [报告]
发表于 2012-05-21 19:49 |只看该作者
本帖最后由 markdong_007 于 2012-05-21 19:51 编辑

回复 18# honkiko
嗯 我没有用pktgen   之前我也看到了pktegn是不能统计dev_queue_xmit函数的,我觉得你说的第二个原因非常有道理,谢谢你

   

论坛徽章:
0
20 [报告]
发表于 2012-05-21 20:04 |只看该作者
回复 19# markdong_007

对了 前辈  你有什么比较好的发包工具吗? 我是用的socket来发包统计的  感觉比较慢   


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP