loyf
驱动牛犊
驱动牛犊
  • 注册日期2002-07-06
  • 最后登录2003-12-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1576回复:3

8139在100M时的问题`

楼主#
更多 发布于:2003-12-23 17:32
问题如下:
使用PC向VxWorks发送UDP数据包,当超过58.5M时数据包在App层不能正确接收数据包,丢包在99%以上。
Vxworks使用的rtl8130c芯片,数据在mac层,IP层,UDP层可以正确接收,cpu使用率为50%-70%。

Be appreciated.
seven
驱动小牛
驱动小牛
  • 注册日期2001-04-03
  • 最后登录2007-03-28
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-24 08:38
是不是你采用了轮寻方式接收数据?换软中断方式看看,应该可以处理的。
我爱中医:http://www.ngotcm.com/forum/index.php
loyf
驱动牛犊
驱动牛犊
  • 注册日期2002-07-06
  • 最后登录2003-12-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-25 14:01
驱动使用中断方式,没有采用轮寻方式。
发生中断时调用netJobAdd ((FUNCPTR)rtl81x9HandleRecvInt, (int) pDrvCtrl, 0, 0, 0, 0);
rtl81x9HandleRecvInt函数申请cluster并向上层传送数据。
但数据从UDP堆栈复制到socket缓冲区时,socket的缓冲区fulled,所以UDP pakcet被丢弃,并产生大面积丢包现象。
socket的缓冲区的数据应该可以被APP及时接收--recvfrom(),但事实上没有。

所以我怀疑APP任务没有被及时调度,但不知道为什么。

并且发送小的UDP包时,驱动申请的cluster,mBlk,clBlk会不足,甚至netJobAdd函数也会失败 -- 注: 0.057ms/packet。

是不是network buffer也有问题?

Any reply is appreciated.
seven
驱动小牛
驱动小牛
  • 注册日期2001-04-03
  • 最后登录2007-03-28
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-26 16:25
z最好能将应用程序也设置成软中断的方式。这样应该可以解决的。
我爱中医:http://www.ngotcm.com/forum/index.php
游客

返回顶部