解决网卡模拟的一个bug

 现象: 在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值