阅读:1576回复:3
8139在100M时的问题`
问题如下:
使用PC向VxWorks发送UDP数据包,当超过58.5M时数据包在App层不能正确接收数据包,丢包在99%以上。 Vxworks使用的rtl8130c芯片,数据在mac层,IP层,UDP层可以正确接收,cpu使用率为50%-70%。 Be appreciated. |
|
沙发#
发布于:2003-12-24 08:38
是不是你采用了轮寻方式接收数据?换软中断方式看看,应该可以处理的。
|
|
|
板凳#
发布于: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. |
|
地板#
发布于:2003-12-26 16:25
z最好能将应用程序也设置成软中断的方式。这样应该可以解决的。
|
|
|