本帖最后由 sinanjj 于 2011-1-20 02:08 编辑
tcp完全正常, udp全部错误.
经过我多次对比得到: udp的checksum和正确的值查了4, 然后udp协议标号和tcp协议标号差了11, 加起来正好是15, 就是F, 看来davicom的工程师处理tcp和udp的checksum用了一个伪头文件.
按说dm9000这芯片出货量这么大也不应该出现这种低级错误.
估计是因为这种错误太底层, 一般出现这种问题先会怀疑自己程序问题吧, 除此以外, linux内核有checksum函数, 一般都自算了, 没用它集成的.
把俺害苦了....
幸亏能设置成0表示不检查crc |