]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/net/checksum.h
drm/crtc: constify drm_crtc_index parameter
[karo-tx-linux.git] / include / net / checksum.h
index abffc64e730019b57a702a7920d24008ae1b01ec..5c30891e84e514518d82f82bff3c9e7d006ab723 100644 (file)
@@ -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)