summaryrefslogtreecommitdiff
path: root/lib/crc/Kconfig
blob: 70e7a6016de3277d06360423a13cf448d7624d71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# SPDX-License-Identifier: GPL-2.0-only

# Kconfig for the kernel's cyclic redundancy check (CRC) library code

config CRC4
	tristate
	help
	  The CRC4 library functions.  Select this if your module uses any of
	  the functions from <linux/crc4.h>.

config CRC7
	tristate
	help
	  The CRC7 library functions.  Select this if your module uses any of
	  the functions from <linux/crc7.h>.

config CRC8
	tristate
	help
	  The CRC8 library functions.  Select this if your module uses any of
	  the functions from <linux/crc8.h>.

config CRC16
	tristate
	help
	  The CRC16 library functions.  Select this if your module uses any of
	  the functions from <linux/crc16.h>.

config CRC_CCITT
	tristate
	help
	  The CRC-CCITT library functions.  Select this if your module uses any
	  of the functions from <linux/crc-ccitt.h>.

config CRC_ITU_T
	tristate
	help
	  The CRC-ITU-T library functions.  Select this if your module uses
	  any of the functions from <linux/crc-itu-t.h>.

config CRC_T10DIF
	tristate
	help
	  The CRC-T10DIF library functions.  Select this if your module uses
	  any of the functions from <linux/crc-t10dif.h>.

config CRC_T10DIF_ARCH
	bool
	depends on CRC_T10DIF && CRC_OPTIMIZATIONS
	default y if ARM && KERNEL_MODE_NEON
	default y if ARM64 && KERNEL_MODE_NEON
	default y if PPC64 && ALTIVEC
	default y if RISCV && RISCV_ISA_ZBC
	default y if X86

config CRC32
	tristate
	select BITREVERSE
	help
	  The CRC32 library functions.  Select this if your module uses any of
	  the functions from <linux/crc32.h> or <linux/crc32c.h>.

config CRC32_ARCH
	bool
	depends on CRC32 && CRC_OPTIMIZATIONS
	default y if ARM && KERNEL_MODE_NEON
	default y if ARM64
	default y if LOONGARCH
	default y if MIPS && CPU_MIPSR6
	default y if PPC64 && ALTIVEC
	default y if RISCV && RISCV_ISA_ZBC
	default y if S390
	default y if SPARC64
	default y if X86

config CRC64
	tristate
	help
	  The CRC64 library functions.  Select this if your module uses any of
	  the functions from <linux/crc64.h>.

config CRC64_ARCH
	bool
	depends on CRC64 && CRC_OPTIMIZATIONS
	default y if RISCV && RISCV_ISA_ZBC && 64BIT
	default y if X86_64

config CRC_OPTIMIZATIONS
	bool "Enable optimized CRC implementations" if EXPERT
	depends on !UML
	default y
	help
	  Disabling this option reduces code size slightly by disabling the
	  architecture-optimized implementations of any CRC variants that are
	  enabled.  CRC checksumming performance may get much slower.

	  Keep this enabled unless you're really trying to minimize the size of
	  the kernel.

config CRC_KUNIT_TEST
	tristate "KUnit tests for CRC functions" if !KUNIT_ALL_TESTS
	depends on KUNIT
	default KUNIT_ALL_TESTS
	select CRC7
	select CRC16
	select CRC_T10DIF
	select CRC32
	select CRC64
	help
	  Unit tests for the CRC library functions.

	  This is intended to help people writing architecture-specific
	  optimized versions.  If unsure, say N.

config CRC_BENCHMARK
	bool "Benchmark for the CRC functions"
	depends on CRC_KUNIT_TEST
	help
	  Include benchmarks in the KUnit test suite for the CRC functions.