All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Roese <sr@denx.de>
To: "Pali Rohár" <pali@kernel.org>, "Simon Glass" <sjg@chromium.org>,
	"Bin Meng" <bmeng.cn@gmail.com>,
	"Adrian Fiergolski" <adrian.fiergolski@fastree3d.com>,
	"Marek Behún" <marek.behun@nic.cz>
Cc: u-boot@lists.denx.de
Subject: Re: [PATCH 4/5] fs: ext4: Use CRC-16 implementation from linux/crc16.h
Date: Thu, 21 Apr 2022 16:35:19 +0200	[thread overview]
Message-ID: <92c616d5-6e9a-6cd5-5818-357c2883f44b@denx.de> (raw)
In-Reply-To: <20220412092044.25133-5-pali@kernel.org>

On 4/12/22 11:20, Pali Rohár wrote:
> Implementation in linux/crc16.h provides standard CRC-16 algorithm with
> polynomial x^16 + x^15 + x^2 + 1. Use it and remove duplicate ext4 CRC-16
> specific code.
> 
> Signed-off-by: Pali Rohár <pali@kernel.org>

Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

> ---
>   fs/ext4/Makefile      |  2 +-
>   fs/ext4/crc16.c       | 62 -------------------------------------------
>   fs/ext4/crc16.h       | 16 -----------
>   fs/ext4/ext4_common.c |  8 +++---
>   fs/ext4/ext4_common.h |  2 +-
>   5 files changed, 6 insertions(+), 84 deletions(-)
>   delete mode 100644 fs/ext4/crc16.c
>   delete mode 100644 fs/ext4/crc16.h
> 
> diff --git a/fs/ext4/Makefile b/fs/ext4/Makefile
> index c2544beee3a5..6ae44a2d0a34 100644
> --- a/fs/ext4/Makefile
> +++ b/fs/ext4/Makefile
> @@ -8,4 +8,4 @@
>   #
>   
>   obj-y := ext4fs.o ext4_common.o dev.o
> -obj-$(CONFIG_EXT4_WRITE) += ext4_write.o ext4_journal.o crc16.o
> +obj-$(CONFIG_EXT4_WRITE) += ext4_write.o ext4_journal.o
> diff --git a/fs/ext4/crc16.c b/fs/ext4/crc16.c
> deleted file mode 100644
> index 3afb34daefa1..000000000000
> --- a/fs/ext4/crc16.c
> +++ /dev/null
> @@ -1,62 +0,0 @@
> -/*
> - *      crc16.c
> - *
> - * This source code is licensed under the GNU General Public License,
> - * Version 2. See the file COPYING for more details.
> - */
> -
> -#include <common.h>
> -#include <asm/byteorder.h>
> -#include <linux/stat.h>
> -#include "crc16.h"
> -
> -/** CRC table for the CRC-16. The poly is 0x8005 (x16 + x15 + x2 + 1) */
> -static __u16 const crc16_table[256] = {
> -	0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,
> -	0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,
> -	0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,
> -	0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,
> -	0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,
> -	0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,
> -	0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,
> -	0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,
> -	0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
> -	0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,
> -	0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,
> -	0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,
> -	0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,
> -	0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,
> -	0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,
> -	0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,
> -	0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,
> -	0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
> -	0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,
> -	0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,
> -	0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,
> -	0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,
> -	0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,
> -	0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,
> -	0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,
> -	0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,
> -	0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
> -	0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,
> -	0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,
> -	0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,
> -	0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
> -	0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040
> -};
> -
> -/**
> - * Compute the CRC-16 for the data buffer
> -*/
> -
> -unsigned int ext2fs_crc16(unsigned int crc,
> -	const void *buffer, unsigned int len)
> -{
> -	const unsigned char *cp = buffer;
> -
> -	while (len--)
> -		crc = (((crc >> 8) & 0xffU) ^
> -		       crc16_table[(crc ^ *cp++) & 0xffU]) & 0x0000ffffU;
> -	return crc;
> -}
> diff --git a/fs/ext4/crc16.h b/fs/ext4/crc16.h
> deleted file mode 100644
> index 5fd113a56c03..000000000000
> --- a/fs/ext4/crc16.h
> +++ /dev/null
> @@ -1,16 +0,0 @@
> -/*
> - * crc16.h - CRC-16 routine
> - * Implements the standard CRC-16:
> - *  Width 16
> - *  Poly  0x8005 (x16 + x15 + x2 + 1)
> - *  Init  0
> - *
> - * Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com>
> - * This source code is licensed under the GNU General Public License,
> - * Version 2. See the file COPYING for more details.
> - */
> -#ifndef __CRC16_H
> -#define __CRC16_H
> -extern unsigned int ext2fs_crc16(unsigned int crc,
> -	const void *buffer, unsigned int len);
> -#endif
> diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c
> index c52cc400e1f2..d49ba4a9954d 100644
> --- a/fs/ext4/ext4_common.c
> +++ b/fs/ext4/ext4_common.c
> @@ -427,14 +427,14 @@ uint16_t ext4fs_checksum_update(uint32_t i)
>   	if (le32_to_cpu(fs->sb->feature_ro_compat) & EXT4_FEATURE_RO_COMPAT_GDT_CSUM) {
>   		int offset = offsetof(struct ext2_block_group, bg_checksum);
>   
> -		crc = ext2fs_crc16(~0, fs->sb->unique_id,
> +		crc = crc16(~0, (__u8 *)fs->sb->unique_id,
>   				   sizeof(fs->sb->unique_id));
> -		crc = ext2fs_crc16(crc, &le32_i, sizeof(le32_i));
> -		crc = ext2fs_crc16(crc, desc, offset);
> +		crc = crc16(crc, (__u8 *)&le32_i, sizeof(le32_i));
> +		crc = crc16(crc, (__u8 *)desc, offset);
>   		offset += sizeof(desc->bg_checksum);	/* skip checksum */
>   		assert(offset == sizeof(*desc));
>   		if (offset < fs->gdsize) {
> -			crc = ext2fs_crc16(crc, (__u8 *)desc + offset,
> +			crc = crc16(crc, (__u8 *)desc + offset,
>   					   fs->gdsize - offset);
>   		}
>   	}
> diff --git a/fs/ext4/ext4_common.h b/fs/ext4/ext4_common.h
> index beaee9c80bd6..504c708b0647 100644
> --- a/fs/ext4/ext4_common.h
> +++ b/fs/ext4/ext4_common.h
> @@ -27,7 +27,7 @@
>   #include <linux/errno.h>
>   #if defined(CONFIG_EXT4_WRITE)
>   #include "ext4_journal.h"
> -#include "crc16.h"
> +#include <linux/crc16.h>
>   #endif
>   
>   #define YES		1

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

  reply	other threads:[~2022-04-21 14:35 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-12  9:20 [PATCH 0/5] crc16: Remove duplicate implementations Pali Rohár
2022-04-12  9:20 ` [PATCH 1/5] crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c Pali Rohár
2022-04-21 14:34   ` Stefan Roese
2022-04-21 23:56   ` Tom Rini
2022-04-12  9:20 ` [PATCH 2/5] crc16: Rename fs/ubifs/crc16.h to include/linux/crc16.h Pali Rohár
2022-04-21 14:34   ` Stefan Roese
2022-04-21 23:56   ` Tom Rini
2022-04-12  9:20 ` [PATCH 3/5] crc16: Move standard CRC-16 implementation from ubifs to lib Pali Rohár
2022-04-21 14:35   ` Stefan Roese
2022-04-21 23:57   ` Tom Rini
2022-04-12  9:20 ` [PATCH 4/5] fs: ext4: Use CRC-16 implementation from linux/crc16.h Pali Rohár
2022-04-21 14:35   ` Stefan Roese [this message]
2022-04-21 23:57   ` Tom Rini
2022-04-12  9:20 ` [PATCH 5/5] misc: atsha204a: Remove duplicate CRC-16 implementation Pali Rohár
2022-04-21 14:35   ` Stefan Roese
2022-04-21 23:57   ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=92c616d5-6e9a-6cd5-5818-357c2883f44b@denx.de \
    --to=sr@denx.de \
    --cc=adrian.fiergolski@fastree3d.com \
    --cc=bmeng.cn@gmail.com \
    --cc=marek.behun@nic.cz \
    --cc=pali@kernel.org \
    --cc=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.