summaryrefslogtreecommitdiff
path: root/include/linux/crc32poly.h
diff options
context:
space:
mode:
authorKrzysztof Kozlowski <krzk@kernel.org>2018-07-17 19:05:36 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2018-07-27 14:04:33 +0300
commit1fb2e3f276ddafee81073d884f599cd2574c31e2 (patch)
tree8eb1549cfe89c18d68c888a54f3723217a0cf78b /include/linux/crc32poly.h
parentd96542ac1020ecd47d2a1668384694789b65cb91 (diff)
downloadlinux-1fb2e3f276ddafee81073d884f599cd2574c31e2.tar.xz
lib/crc: Move polynomial definition to separate header
Allow other drivers and parts of kernel to use the same define for CRC32 polynomial, instead of duplicating it in many places. This code does not bring any functional changes, except moving existing code. Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'include/linux/crc32poly.h')
-rw-r--r--include/linux/crc32poly.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/linux/crc32poly.h b/include/linux/crc32poly.h
new file mode 100644
index 000000000000..7ad5aa92d3c7
--- /dev/null
+++ b/include/linux/crc32poly.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_CRC32_POLY_H
+#define _LINUX_CRC32_POLY_H
+
+/*
+ * There are multiple 16-bit CRC polynomials in common use, but this is
+ * *the* standard CRC-32 polynomial, first popularized by Ethernet.
+ * x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0
+ */
+#define CRCPOLY_LE 0xedb88320
+#define CRCPOLY_BE 0x04c11db7
+
+/*
+ * This is the CRC32c polynomial, as outlined by Castagnoli.
+ * x^32+x^28+x^27+x^26+x^25+x^23+x^22+x^20+x^19+x^18+x^14+x^13+x^11+x^10+x^9+
+ * x^8+x^6+x^0
+ */
+#define CRC32C_POLY_LE 0x82F63B78
+
+#endif /* _LINUX_CRC32_POLY_H */