Commit b82f7229 authored by Eric Biggers's avatar Eric Biggers Committed by Jakub Kicinski
Browse files

lib/crc32: remove unused support for CRC32C combination



crc32c_combine() and crc32c_shift() are no longer used (except by the
KUnit test that tests them), and their current implementation is very
slow.  Remove them.

Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Link: https://patch.msgid.link/20250519175012.36581-8-ebiggers@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 70c96c7c
Loading
Loading
Loading
Loading
+0 −23
Original line number Diff line number Diff line
@@ -76,29 +76,6 @@ static inline u32 crc32_le_combine(u32 crc1, u32 crc2, size_t len2)
	return crc32_le_shift(crc1, len2) ^ crc2;
}

u32 crc32c_shift(u32 crc, size_t len);

/**
 * crc32c_combine - Combine two crc32c check values into one. For two sequences
 *		    of bytes, seq1 and seq2 with lengths len1 and len2, crc32c()
 *		    check values were calculated for each, crc1 and crc2.
 *
 * @crc1: crc32c of the first block
 * @crc2: crc32c of the second block
 * @len2: length of the second block
 *
 * Return: The crc32c() check value of seq1 and seq2 concatenated, requiring
 *	   only crc1, crc2, and len2. Note: If seq_full denotes the concatenated
 *	   memory area of seq1 with seq2, and crc_full the crc32c() value of
 *	   seq_full, then crc_full == crc32c_combine(crc1, crc2, len2) when
 *	   crc_full was seeded with the same initializer as crc1, and crc2 seed
 *	   was 0. See also crc_combine_test().
 */
static inline u32 crc32c_combine(u32 crc1, u32 crc2, size_t len2)
{
	return crc32c_shift(crc1, len2) ^ crc2;
}

#define crc32(seed, data, length)  crc32_le(seed, (unsigned char const *)(data), length)

/*
+0 −6
Original line number Diff line number Diff line
@@ -119,12 +119,6 @@ u32 crc32_le_shift(u32 crc, size_t len)
}
EXPORT_SYMBOL(crc32_le_shift);

u32 crc32c_shift(u32 crc, size_t len)
{
	return crc32_generic_shift(crc, len, CRC32C_POLY_LE);
}
EXPORT_SYMBOL(crc32c_shift);

u32 crc32_be_base(u32 crc, const u8 *p, size_t len)
{
	while (len--)
+0 −6
Original line number Diff line number Diff line
@@ -391,17 +391,11 @@ static u64 crc32c_wrapper(u64 crc, const u8 *p, size_t len)
	return crc32c(crc, p, len);
}

static u64 crc32c_combine_wrapper(u64 crc1, u64 crc2, size_t len2)
{
	return crc32c_combine(crc1, crc2, len2);
}

static const struct crc_variant crc_variant_crc32c = {
	.bits = 32,
	.le = true,
	.poly = 0x82f63b78,
	.func = crc32c_wrapper,
	.combine_func = crc32c_combine_wrapper,
};

static void crc32c_test(struct kunit *test)