请教关于网路驱动调试的问题,谢谢!

参照下载的bsp包写了自己的网络驱动,也没有什么好的调试手段,只是通过telent登录后运行 pidin -l -d1& 命令输出进程信息以使网络驱动处于一直的占用中,起初的运行情况和理想,运行了3天后的情况是速度渐渐变慢直至没有任何输出,此后telent也自动退出了。
对驱动代码进行了多次修改,但是现象依旧,现在比较苦恼于问题在根源在哪?请大虾们指点一个调试或是修改的大致方向,让小弟可以继续进行,十分感谢!

ps:target armle 9261ejs
qnx 6.2.1

通过串口可不可以登录?看看有没有内存泄漏.

简单的网络驱动测试,通常有两种。

一是 ping -f <target_ip> 来疯狂ping目标,看能坚持多久。:slight_smile: 建议在一个单独网络上做这个测试,不然大量的ping包,会造成网络变慢。

另一个是修改目标机的inetd.conf,打开 chargen 服务。然后从外面 telnet <target_id> chargen (或是 telnet <target_id> 19),看这个连接能不能保持。

按照xtang说的第一种测试方法,我在arm板上使用ping -f ping x86的机器,一段时间(几分钟)就出现了异样,输出信息为:
ping: sendto: No buffer space available

应该是内存泄漏的问题,对于内存泄漏的问题我一直挺留意的,我检查了很多次都没有觉得代码异样,不清楚这句话的真正提醒是否为内存泄漏至内存消耗完?

谢谢各位!

不一定是泄漏,硬件突然停止发送,导致send ring全满,再也不能往send里放的进候,也会出现上面那样的错。这个,加几个slog/fprintf 应该就可以判断出来的。

仔细检查一下驱动的发送那条路。上层传下来的 npkt,怎么样放入send里,怎么样交给硬件的;硬件传送成功后,怎样把那个包取回,有没有 tx_done() 而把那个包释放了的。

谢谢两位的回复!
按照两位的回复,我有目的性地检查了相关的代码,在做了一系列的修改后进行了为期三天的测试,测试的手段就是xtang说的ping -f <手段>,并且在ping的同时通过telnet登录qnx,在命令行内执行pidin -l -d1&,系统到现在一直运行了3天左右。
不清楚一般这种测试进行了如何的地步,才能完全地确定网络的鲁棒性呢?