On 11/01/16 10:09, David Laight wrote:
From: Edward Cree
quoted
Sent: 08 January 2016 19:47
...
quoted
+ if (skb->ip_summed == CHECKSUM_PARTIAL) {
+ csum = csum_fold(lco_csum(skb));
+ if (csum == 0)
+ csum = CSUM_MANGLED_0;
+ return csum;
+ } else {
+ return csum_fold(skb_checksum(skb, 0, skb->len, 0));
+ }
You see to be worried about csum_fold() returning 0 in one
path, but not in the other.
I'm guessing that 0 can only happen if all the bytes that have
been checksummed are zero.
csum_fold complements, so if the sum comes to (say) 0x1fffe, it will return ~0xffff which is 0.
Next version of patch will mangle 0 for both branches.
-ed