|
@@ -80,6 +80,49 @@ config CRC32_SELFTEST
|
|
|
and crc32_be over byte strings with random alignment and length
|
|
|
and computes the total elapsed time and number of bytes processed.
|
|
|
|
|
|
+choice
|
|
|
+ prompt "CRC32 implementation"
|
|
|
+ depends on CRC32
|
|
|
+ default CRC32_SLICEBY8
|
|
|
+
|
|
|
+config CRC32_SLICEBY8
|
|
|
+ bool "Slice by 8 bytes"
|
|
|
+ help
|
|
|
+ Calculate checksum 8 bytes at a time with a clever slicing algorithm.
|
|
|
+ This is the fastest algorithm, but comes with a 8KiB lookup table.
|
|
|
+ Most modern processors have enough cache to hold this table without
|
|
|
+ thrashing the cache.
|
|
|
+
|
|
|
+ This is the default implementation choice. Choose this one unless
|
|
|
+ you have a good reason not to.
|
|
|
+
|
|
|
+config CRC32_SLICEBY4
|
|
|
+ bool "Slice by 4 bytes"
|
|
|
+ help
|
|
|
+ Calculate checksum 4 bytes at a time with a clever slicing algorithm.
|
|
|
+ This is a bit slower than slice by 8, but has a smaller 4KiB lookup
|
|
|
+ table.
|
|
|
+
|
|
|
+ Only choose this option if you know what you are doing.
|
|
|
+
|
|
|
+config CRC32_SARWATE
|
|
|
+ bool "Sarwate's Algorithm (one byte at a time)"
|
|
|
+ help
|
|
|
+ Calculate checksum a byte at a time using Sarwate's algorithm. This
|
|
|
+ is not particularly fast, but has a small 256 byte lookup table.
|
|
|
+
|
|
|
+ Only choose this option if you know what you are doing.
|
|
|
+
|
|
|
+config CRC32_BIT
|
|
|
+ bool "Classic Algorithm (one bit at a time)"
|
|
|
+ help
|
|
|
+ Calculate checksum one bit at a time. This is VERY slow, but has
|
|
|
+ no lookup table. This is provided as a debugging option.
|
|
|
+
|
|
|
+ Only choose this option if you are debugging crc32.
|
|
|
+
|
|
|
+endchoice
|
|
|
+
|
|
|
config CRC7
|
|
|
tristate "CRC7 functions"
|
|
|
help
|