阅读:1792回复:3
关于网络掉线后只能reset系统恢复的问题(CS8900,DM9000)
最近在调一个2410的板子,上面分别接了CS8900A和DM9000这两个网卡芯片,遇到了一个很奇怪的问题,就是无论在linux还是WinCE下,当你用大包(大于5000)或者上网浏览www.sohu.com等内容比较丰富的网页时,过一会就会断线,而且这种情况下只能reset系统才能恢复,这个是一个必然的现象。
我的网卡芯片的reset是和2410的reset接一起的,所以网卡乱掉后只能software reset,而这个几乎不起什么作用,无论怎么修改IP地址都不行。经过跟踪,发现一般是出现了下面这样的情况: 正常的情况下,比如DM9000,当发送完一个帧的数据(内部分两次发送),卡会给系统一个中断,表示现在发送完成,那么驱动记数,当两次都发完后就告诉上层这个帧发送完毕,当外部有数据到卡这边时,卡也会向系统发中断通知过来接收,这个是正常的现象。 那么不正常的时候就会出现,当发送完一个帧的数据后,卡给系统中断了,而系统此时去读卡中断状态寄存器却发现并不是发送完毕的中断,所以也就没有给上层返回发送完毕的事件。不知道这个是不是跟总线BANK的时序配置有关?另外,当外面用5000这样的大包ping的时候,卡也不应该崩溃啊,即使对于1500以上这样的大包,卡会discard掉,但是为什么会崩溃到无法恢复呢? 相信我说的cs8900,DM9000这样的现象,其他的朋友也遇到过,不知道大家有没有什么好的建议? |
|
沙发#
发布于:2007-07-02 12:14
最近发现,原来是这个驱动在大于1472以上的数据包上有问题,当外面发来的数据需要重组,或者发出去的数据需要分片发送时(即大于MTU),就会出现问题,诶,到底是那里出现问题呢?我的PB有问题,NDIS不支持IP重组?还是DM9000的官方驱动有问题呢?
|
|
板凳#
发布于:2007-07-02 15:51
我用的DM9000,没有这样的问题呀。可以和我交流一下,qq 29942206
|
|
地板#
发布于:2007-07-02 18:38
多谢老兄,等下加你聊聊
|
|