diff options
| author | David S. Miller <davem@davemloft.net> | 2016-03-13 15:01:00 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2016-03-13 15:01:00 -0400 |
| commit | f22f5f6060584ac66a7a43f644788fda8fc7b1f8 (patch) | |
| tree | 057defd0704c2fcb6500c062037f2657710b73e2 /include | |
| parent | 3a8befcd7872f572882ad7e14994a17f9b55dd4e (diff) | |
| parent | 338039635d01524090e7bd706a3e555e20d5b337 (diff) | |
Merge branch 'net-minor-cleanups-and-optimizations'
Alexander Duyck says:
====================
A couple of minor clean-ups and optimizations
This patch series is basically just a v2 of a couple patches I recently
submitted.
The two patches aren't technically related but there are just items I found
while cleaning up and prepping some further work to enable Tx checksums for
tunnels.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/net/checksum.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/include/net/checksum.h b/include/net/checksum.h index abffc64e7300..5c30891e84e5 100644 --- a/include/net/checksum.h +++ b/include/net/checksum.h @@ -88,8 +88,11 @@ static inline __wsum csum_block_add(__wsum csum, __wsum csum2, int offset) { u32 sum = (__force u32)csum2; - if (offset&1) - sum = ((sum&0xFF00FF)<<8)+((sum>>8)&0xFF00FF); + + /* rotate sum to align it with a 16b boundary */ + if (offset & 1) + sum = ror32(sum, 8); + return csum_add(csum, (__force __wsum)sum); } @@ -102,10 +105,7 @@ csum_block_add_ext(__wsum csum, __wsum csum2, int offset, int len) static inline __wsum csum_block_sub(__wsum csum, __wsum csum2, int offset) { - u32 sum = (__force u32)csum2; - if (offset&1) - sum = ((sum&0xFF00FF)<<8)+((sum>>8)&0xFF00FF); - return csum_sub(csum, (__force __wsum)sum); + return csum_block_add(csum, ~csum2, offset); } static inline __wsum csum_unfold(__sum16 n) |
