diff options
author | Eric Dumazet <edumazet@google.com> | 2014-03-23 22:51:36 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-03-24 00:18:44 -0400 |
commit | 99f0b958b194f7d88973f1c2190d207e0a2c7e79 (patch) | |
tree | f76073a45af1840a773084b039c53f7b7db58fb5 /net/ipv4/route.c | |
parent | 860b4042ddec744de52461f91c869630b1bb23c2 (diff) |
net: optimize csum_replace2()
When changing one 16bit value by another in IP header, we can adjust
the IP checksum by doing a simple operation described in RFC 1624, as
reminded by David.
csum_partial() is a complex function on x86_64, not really suited for
small number of checksummed bytes.
I spotted csum_partial() being in the top 20 most consuming functions
(more than 1 %) in a GRO workload, which was rather unexpected.
The caller was inet_gro_complete() doing a csum_replace2() when
building the new IP header for the GRO packet.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/route.c')
0 files changed, 0 insertions, 0 deletions