现象: 在cfe中,当给网卡配上ip地址以后,外面可以ping -f,但系统启动以后,用initramfs中的ipconfig配上网卡后,发现不能ping通虚拟机,用tcpdump发现arp的通信是正常的,通过调试,发现在sb1250的驱动中有
len = (int)G_DMA_DSCRB_PKT_SIZE(dsc->dscr_b) - 4;
在收到包的时候会把dma传过来的长度减去4,查资料发现这个是crc的长度,由于在arp处理过程中没有检查skb的长度,所以,arp的通信正常,但在 ip_rcv中检查长度了,所以包被丢弃.在网卡模拟程序中加上crc的长度,问题解决.还可以用ping flood来测试呢:)
[root@localhost ipconfig]# ping 192.168.0.1 -f
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
....................................................................................................................................
由于延迟比较大,刚开始会丢一些包,但以后就不丢了.这个是性能优化问题了,留待以后解决,不过现在网卡的模拟算是比较正常了.
转载于:https://www.cnblogs.com/simBCM/archive/2011/04/05/2005770.html