| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | |
| 3 | # Kconfig for the kernel's cyclic redundancy check (CRC) library code |
| 4 | |
| 5 | config CRC4 |
| 6 | tristate |
| 7 | help |
| 8 | The CRC4 library functions. Select this if your module uses any of |
| 9 | the functions from <linux/crc4.h>. |
| 10 | |
| 11 | config CRC7 |
| 12 | tristate |
| 13 | help |
| 14 | The CRC7 library functions. Select this if your module uses any of |
| 15 | the functions from <linux/crc7.h>. |
| 16 | |
| 17 | config CRC8 |
| 18 | tristate |
| 19 | help |
| 20 | The CRC8 library functions. Select this if your module uses any of |
| 21 | the functions from <linux/crc8.h>. |
| 22 | |
| 23 | config CRC16 |
| 24 | tristate |
| 25 | help |
| 26 | The CRC16 library functions. Select this if your module uses any of |
| 27 | the functions from <linux/crc16.h>. |
| 28 | |
| 29 | config CRC_CCITT |
| 30 | tristate |
| 31 | help |
| 32 | The CRC-CCITT library functions. Select this if your module uses any |
| 33 | of the functions from <linux/crc-ccitt.h>. |
| 34 | |
| 35 | config CRC_ITU_T |
| 36 | tristate |
| 37 | help |
| 38 | The CRC-ITU-T library functions. Select this if your module uses |
| 39 | any of the functions from <linux/crc-itu-t.h>. |
| 40 | |
| 41 | config CRC_T10DIF |
| 42 | tristate |
| 43 | help |
| 44 | The CRC-T10DIF library functions. Select this if your module uses |
| 45 | any of the functions from <linux/crc-t10dif.h>. |
| 46 | |
| 47 | config CRC_T10DIF_ARCH |
| 48 | bool |
| 49 | depends on CRC_T10DIF && CRC_OPTIMIZATIONS |
| 50 | default y if ARM && KERNEL_MODE_NEON |
| 51 | default y if ARM64 |
| 52 | default y if PPC64 && ALTIVEC |
| 53 | default y if RISCV && RISCV_ISA_ZBC |
| 54 | default y if X86 |
| 55 | |
| 56 | config CRC32 |
| 57 | tristate |
| 58 | select BITREVERSE |
| 59 | help |
| 60 | The CRC32 library functions. Select this if your module uses any of |
| 61 | the functions from <linux/crc32.h> or <linux/crc32c.h>. |
| 62 | |
| 63 | config CRC32_ARCH |
| 64 | bool |
| 65 | depends on CRC32 && CRC_OPTIMIZATIONS |
| 66 | default y if ARM && KERNEL_MODE_NEON |
| 67 | default y if ARM64 |
| 68 | default y if LOONGARCH && 64BIT |
| 69 | default y if MIPS && CPU_MIPSR6 |
| 70 | default y if PPC64 && ALTIVEC |
| 71 | default y if RISCV && RISCV_ISA_ZBC |
| 72 | default y if S390 |
| 73 | default y if SPARC64 |
| 74 | default y if X86 |
| 75 | |
| 76 | config CRC64 |
| 77 | tristate |
| 78 | help |
| 79 | The CRC64 library functions. Select this if your module uses any of |
| 80 | the functions from <linux/crc64.h>. |
| 81 | |
| 82 | config CRC64_ARCH |
| 83 | bool |
| 84 | depends on CRC64 && CRC_OPTIMIZATIONS |
| 85 | default y if ARM && KERNEL_MODE_NEON && !CPU_BIG_ENDIAN |
| 86 | default y if ARM64 |
| 87 | default y if RISCV && RISCV_ISA_ZBC && 64BIT |
| 88 | default y if X86_64 |
| 89 | |
| 90 | config CRC_OPTIMIZATIONS |
| 91 | bool "Enable optimized CRC implementations" if EXPERT |
| 92 | depends on !UML |
| 93 | default y |
| 94 | help |
| 95 | Disabling this option reduces code size slightly by disabling the |
| 96 | architecture-optimized implementations of any CRC variants that are |
| 97 | enabled. CRC checksumming performance may get much slower. |
| 98 | |
| 99 | Keep this enabled unless you're really trying to minimize the size of |
| 100 | the kernel. |
| 101 | |
| 102 | config CRC_KUNIT_TEST |
| 103 | tristate "KUnit tests for CRC functions" if !KUNIT_ALL_TESTS |
| 104 | depends on KUNIT && (CRC7 || CRC16 || CRC_T10DIF || CRC32 || CRC64) |
| 105 | default KUNIT_ALL_TESTS |
| 106 | help |
| 107 | Unit tests for the CRC library functions. |
| 108 | |
| 109 | This is intended to help people writing architecture-specific |
| 110 | optimized versions. If unsure, say N. |
| 111 | |
| 112 | config CRC_ENABLE_ALL_FOR_KUNIT |
| 113 | tristate "Enable all CRC functions for KUnit test" |
| 114 | depends on KUNIT |
| 115 | select CRC7 |
| 116 | select CRC16 |
| 117 | select CRC_T10DIF |
| 118 | select CRC32 |
| 119 | select CRC64 |
| 120 | help |
| 121 | Enable all CRC functions that have test code in CRC_KUNIT_TEST. |
| 122 | |
| 123 | Enable this only if you'd like the CRC KUnit test suite to test all |
| 124 | the CRC variants, even ones that wouldn't otherwise need to be built. |
| 125 | |
| 126 | config CRC_BENCHMARK |
| 127 | bool "Benchmark for the CRC functions" |
| 128 | depends on CRC_KUNIT_TEST |
| 129 | help |
| 130 | Include benchmarks in the KUnit test suite for the CRC functions. |