net: fix IPv6 checksum
authorKonstantin Ananyev <konstantin.ananyev@intel.com>
Thu, 11 Dec 2014 11:49:42 +0000 (11:49 +0000)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 16 Dec 2014 23:40:37 +0000 (00:40 +0100)
commitca68c8190f6f1d81e473280f854961fd074ad1f7
treec41ec4b6252a58e6017106dd72edb7ad489f3269
parentd3e454a86f5f40fd66477fb032c3ce698795f18b
net: fix IPv6 checksum

For rte_ipv6_phdr_cksum() gcc 4.8.* with "-O3" not always generates
correct code.
Sometimes it 'forgets' to put len and proto fields of psd_header on the stack.
To overcome that problem and speedup things a bit, refactored rte_raw_cksum()
by splitting ipv6 pseudo-header csum calculation into 3 phases:
1. calc sum for src & dst addresses
2. add sum for proto & len.
3. finalise sum
That makes gcc to generate valid code and helps to avoid any copying.

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_net/rte_ip.h