xref: /linux/lib/crc/Kconfig (revision 2b7531b2a2037959ac81ff2c95e4557b30cfd253)
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 ARCH_HAS_CRC_T10DIF
48	bool
49
50config CRC_T10DIF_ARCH
51	bool
52	depends on CRC_T10DIF && CRC_OPTIMIZATIONS
53	default y if ARM && KERNEL_MODE_NEON
54	default y if ARM64 && KERNEL_MODE_NEON
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 ARCH_HAS_CRC32
64	bool
65
66config CRC32_ARCH
67	bool
68	depends on CRC32 && CRC_OPTIMIZATIONS
69	default y if ARM && KERNEL_MODE_NEON
70	default y if ARM64
71
72config CRC64
73	tristate
74	help
75	  The CRC64 library functions.  Select this if your module uses any of
76	  the functions from <linux/crc64.h>.
77
78config ARCH_HAS_CRC64
79	bool
80
81config CRC64_ARCH
82	bool
83	depends on CRC64 && CRC_OPTIMIZATIONS
84
85config CRC_OPTIMIZATIONS
86	bool "Enable optimized CRC implementations" if EXPERT
87	depends on !UML
88	default y
89	help
90	  Disabling this option reduces code size slightly by disabling the
91	  architecture-optimized implementations of any CRC variants that are
92	  enabled.  CRC checksumming performance may get much slower.
93
94	  Keep this enabled unless you're really trying to minimize the size of
95	  the kernel.
96
97config CRC_KUNIT_TEST
98	tristate "KUnit tests for CRC functions" if !KUNIT_ALL_TESTS
99	depends on KUNIT
100	default KUNIT_ALL_TESTS
101	select CRC7
102	select CRC16
103	select CRC_T10DIF
104	select CRC32
105	select CRC64
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
112config CRC_BENCHMARK
113	bool "Benchmark for the CRC functions"
114	depends on CRC_KUNIT_TEST
115	help
116	  Include benchmarks in the KUnit test suite for the CRC functions.
117