On Wed, Jan 20, 2016 at 11:11 AM, Rustad, Mark D <mark.d.rus...@intel.com> wrote: > Alexander Duyck <alexander.du...@gmail.com> wrote: > >> Actually you may want to go the other way on that. If they weren't >> flipping the checksum value for GRE before why should we start doing >> that now? I'm pretty sure the checksum mangling is a very UDP centric >> thing. There is no need to introduce it to other protocols. > > > If different checksum representations are needed, then there really should > be an explicit indication of whether it is a UDP-style checksum or other in > the skb I would think rather than guessing it based on the offset. Of course > it would be convenient if all the protocols that use a one's complement > checksum would tolerate the UDP representation. I have a long (and now old) > history working with real one's complement machines, and so I would want to > believe that any correct implementation would tolerate it, but I don't know > for a fact that they do.
The only reason why UDP does the bit flip is because it has reserved a checksum of 0 as a special value. For the checksum math itself either 0xFFFF or 0 are interchangeable. The only time they would make any difference would be if we had a value of 0 that we were checksumming, but since that is not the case the values will always end up converging back onto 0xFFFF as the final result in the case of a correct checksum. - Alex