iscsi-scst: Accept CRC32 or LIBCRC32C for crc32c() across kernels

Kernel v6.15+ removed LIBCRC32C and switched in-tree users to CRC32.
Keep older kernels working by accepting either CRC32 or LIBCRC32C in
Kconfig and preprocessor guards, so crc32c() usage compiles and links
on both old and new kernels.
This commit is contained in:
Gleb Chesnokov
2025-08-18 13:23:30 +03:00
parent 314659ed7c
commit 1ba89c391e
2 changed files with 6 additions and 4 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
config SCST_ISCSI
tristate "ISCSI Target"
depends on SCST && INET && LIBCRC32C
depends on SCST && INET && (LIBCRC32C || CRC32)
default SCST
help
ISCSI target driver for SCST. The iSCSI protocol has been defined in
+5 -3
View File
@@ -26,7 +26,8 @@
void digest_alg_available(int *val)
{
#if defined(CONFIG_LIBCRC32C_MODULE) || defined(CONFIG_LIBCRC32C)
#if defined(CONFIG_LIBCRC32C_MODULE) || defined(CONFIG_LIBCRC32C) || \
defined(CONFIG_CRC32_MODULE) || defined(CONFIG_CRC32)
int crc32c = 1;
#else
int crc32c = 0;
@@ -34,7 +35,7 @@ void digest_alg_available(int *val)
if ((*val & DIGEST_CRC32C) && !crc32c) {
PRINT_ERROR("CRC32C digest algorithm not available in kernel");
*val |= ~DIGEST_CRC32C;
*val &= ~DIGEST_CRC32C;
}
}
@@ -65,7 +66,8 @@ static __be32 evaluate_crc32_from_sg(struct scatterlist *sg, int nbytes, uint32_
}
#endif
#if defined(CONFIG_LIBCRC32C_MODULE) || defined(CONFIG_LIBCRC32C)
#if defined(CONFIG_LIBCRC32C_MODULE) || defined(CONFIG_LIBCRC32C) || \
defined(CONFIG_CRC32_MODULE) || defined(CONFIG_CRC32)
{
int pad_bytes = ((nbytes + 3) & -4) - nbytes;