Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: GPL-2.0-only
2
3# Kconfig for the kernel's cyclic redundancy check (CRC) library code
4
5config 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
11config 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
17config 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
23config 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
29config 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
35config 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
41config 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
47config 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 && KERNEL_MODE_NEON
52 default y if PPC64 && ALTIVEC
53 default y if RISCV && RISCV_ISA_ZBC
54 default y if X86
55
56config 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
63config 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
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
76config 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
82config CRC64_ARCH
83 bool
84 depends on CRC64 && CRC_OPTIMIZATIONS
85 default y if RISCV && RISCV_ISA_ZBC && 64BIT
86 default y if X86_64
87
88config CRC_OPTIMIZATIONS
89 bool "Enable optimized CRC implementations" if EXPERT
90 depends on !UML
91 default y
92 help
93 Disabling this option reduces code size slightly by disabling the
94 architecture-optimized implementations of any CRC variants that are
95 enabled. CRC checksumming performance may get much slower.
96
97 Keep this enabled unless you're really trying to minimize the size of
98 the kernel.
99
100config CRC_KUNIT_TEST
101 tristate "KUnit tests for CRC functions" if !KUNIT_ALL_TESTS
102 depends on KUNIT
103 default KUNIT_ALL_TESTS
104 select CRC7
105 select CRC16
106 select CRC_T10DIF
107 select CRC32
108 select CRC64
109 help
110 Unit tests for the CRC library functions.
111
112 This is intended to help people writing architecture-specific
113 optimized versions. If unsure, say N.
114
115config CRC_BENCHMARK
116 bool "Benchmark for the CRC functions"
117 depends on CRC_KUNIT_TEST
118 help
119 Include benchmarks in the KUnit test suite for the CRC functions.