问题现象:
PC向嵌入式linux系统发送udp包。发送小于5500bytes的包基本不会丢包,大于5500bytes时丢包非常严重。
linux下的网卡驱动是第三方写的,怀疑是驱动的问题。可是又不会也没时间找到驱动的错误。之前将大于5500的包拆分成几个小包解决这个问题。但后来第三方修改驱动后在linux与linux之间可以互传大于5500的包,所以现在就没有拆了。没想到pc到linux还是会有这个问题。怎么办?怎么办?修改代码进行拆包?改动太多,并且有点麻烦,考虑稍微不周会使程序很不稳定。思考,思考。老大给了个建议,将pc的网卡设成10M半双工试试。
PC的网卡是8139 10/100M自适应网卡,嵌入式板用的是91c113 100M网卡,两者都连在10/100M交换机上。在本地连接 属性 常规 配置 高级中将模式设成10 half mode ,然后再跑我的程序。嚯嚯嚯嚯嚯!畅通无阻。改成10 full mode ,一样没问题。 改成100 half mode ,严重的丢包又出现了。还是改成10 full mode。 可怜的8139呀,100M网卡硬生生的被掐在10M模式下。
丢包问题虽然不存在了,可是为什么PC的网卡非得设成10M的呢?老大说可能91c113网卡还是跑在10M模式。我就不明白了,难道装100M网卡的机器就不能与装10M网卡的机器通信?没有的事嘛。到底是什么原因呢?
posted on 2006-08-18 12:54 zgf的blog 阅读(3701)
评论(6) 编辑 收藏