xref: /linux/lib/crc/Kconfig (revision 0bcfca56406dc6342e30fafe41a2f34cdde029b4)
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
54config CRC32
55	tristate
56	select BITREVERSE
57	help
58	  The CRC32 library functions.  Select this if your module uses any of
59	  the functions from <linux/crc32.h> or <linux/crc32c.h>.
60
61config ARCH_HAS_CRC32
62	bool
63
64config CRC32_ARCH
65	bool
66	depends on CRC32 && CRC_OPTIMIZATIONS
67
68config CRC64
69	tristate
70	help
71	  The CRC64 library functions.  Select this if your module uses any of
72	  the functions from <linux/crc64.h>.
73
74config ARCH_HAS_CRC64
75	bool
76
77config CRC64_ARCH
78	bool
79	depends on CRC64 && CRC_OPTIMIZATIONS
80
81config CRC_OPTIMIZATIONS
82	bool "Enable optimized CRC implementations" if EXPERT
83	depends on !UML
84	default y
85	help
86	  Disabling this option reduces code size slightly by disabling the
87	  architecture-optimized implementations of any CRC variants that are
88	  enabled.  CRC checksumming performance may get much slower.
89
90	  Keep this enabled unless you're really trying to minimize the size of
91	  the kernel.
92
93config CRC_KUNIT_TEST
94	tristate "KUnit tests for CRC functions" if !KUNIT_ALL_TESTS
95	depends on KUNIT
96	default KUNIT_ALL_TESTS
97	select CRC7
98	select CRC16
99	select CRC_T10DIF
100	select CRC32
101	select CRC64
102	help
103	  Unit tests for the CRC library functions.
104
105	  This is intended to help people writing architecture-specific
106	  optimized versions.  If unsure, say N.
107
108config CRC_BENCHMARK
109	bool "Benchmark for the CRC functions"
110	depends on CRC_KUNIT_TEST
111	help
112	  Include benchmarks in the KUnit test suite for the CRC functions.
113