[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: kirkwood mv643xx_eth wrong tcp checksums



Lennert Buytenhek wrote on 23.11.2009 15:50:
> The general idea here would be to do this in mv643xx_eth.c:
> 
> -               if (unlikely(tag_bytes & ~12)) {
> +               if (unlikely(tag_bytes & ~12) || skb->len > MAGIC_VALUE) {
> 
> If you set MAGIC_VALUE to 1514, regular MTU should still work, and
> use with hw checksum offload, and jumbo MTU should start to work,
> albeit with sw checksumming.
> 
> Can you try that?

I just did some tests to find the largest MTU that works with hardware
crc. --> MTU 1628. With MTU <= 1628 everything is fine and MTU > 1628
produces invalid tcp checksums.
That's unfortunately not much more than the regular 1500 bytes. However
there is no significant difference in tcp performance with MTU 1500 or
1628. So leaving MAGIC_VALUE at 1514 (or maybe 1522 for 802.1q) should
be fine.

I am now compiling the latest 2.6.32-rc8 kernel with your suggested
patch. Sice I'm not an expert in cross-compiling I took the easy way to
compile it directly on the actual qnap device which might take some
hours. I will let you know the result of this workaround tomorrow.


Reply to: