All of lore.kernel.org
 help / color / mirror / Atom feed
* Switch DVB to generic crc32.
@ 2002-11-08 11:12 David Woodhouse
  2002-11-08 13:57 ` Holger Waechtler
  0 siblings, 1 reply; 6+ messages in thread
From: David Woodhouse @ 2002-11-08 11:12 UTC (permalink / raw)
  To: torvalds; +Cc: alan, linux-kernel

Not entirely sure why the DVB core code has its own crc32 table -- not only 
should it be using the one the kernel provides, but AFAICT nothing in the 
tree actually seem to _use_ its dvb_set_crc32() function anyway.

I'm assuming the latter is just a symptom of a partial merge and some 
driver not yet in the tree is going to use it... this patch fixes the 
former.

===== lib/Makefile 1.15 vs edited =====
--- 1.15/lib/Makefile	Wed Oct 30 01:19:29 2002
+++ edited/lib/Makefile	Fri Nov  8 10:56:03 2002
@@ -27,6 +27,7 @@
 obj-$(CONFIG_ZLIB_INFLATE) += zlib_inflate/
 obj-$(CONFIG_ZLIB_DEFLATE) += zlib_deflate/
 
+include $(TOPDIR)/drivers/media/dvb/dvb-core/Makefile.lib
 include $(TOPDIR)/drivers/net/Makefile.lib
 include $(TOPDIR)/drivers/usb/class/Makefile.lib
 include $(TOPDIR)/fs/Makefile.lib
===== drivers/media/dvb/dvb-core/dvb_demux.c 1.1 vs edited =====
--- 1.1/drivers/media/dvb/dvb-core/dvb_demux.c	Tue Oct 22 15:48:37 2002
+++ edited/drivers/media/dvb/dvb-core/dvb_demux.c	Fri Nov  8 10:57:24 2002
@@ -24,6 +24,7 @@
 #include <linux/vmalloc.h>
 #include <linux/module.h>
 #include <linux/poll.h>
+#include <linux/crc32.h>
 #include <linux/version.h>
 #include <asm/uaccess.h>
 
@@ -108,68 +109,11 @@
         return 184;
 }
 
-
-static u32 
-dvb_crc_table[256] = {
-	0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
-	0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
-	0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7,
-	0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
-	0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3,
-	0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
-	0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef,
-	0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
-	0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb,
-	0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
-	0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
-	0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
-	0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4,
-	0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
-	0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08,
-	0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
-	0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc,
-	0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
-	0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050,
-	0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
-	0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
-	0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
-	0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1,
-	0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
-	0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5,
-	0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
-	0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9,
-	0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
-	0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd,
-	0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
-	0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
-	0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
-	0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2,
-	0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
-	0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e,
-	0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
-	0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a,
-	0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
-	0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676,
-	0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
-	0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
-	0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
-	0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4};
-
-u32 dvb_crc32(u8 *data, int len)
-{
-	int i;
-	u32 crc = 0xffffffff;
-
-	for (i=0; i<len; i++)
-                crc = (crc << 8) ^ dvb_crc_table[((crc >> 24) ^ *data++) & 0xff];
-	return crc;
-}
-
 void dvb_set_crc32(u8 *data, int length)
 {
         u32 crc;
 
-        crc=dvb_crc32(data,length);
+        crc=crc32_le(~0, data, length);
         data[length]   = (crc>>24)&0xff;
         data[length+1] = (crc>>16)&0xff;
         data[length+2] = (crc>>8)&0xff;
--- /dev/null	Sat Aug 31 00:31:37 2002
+++ edited/drivers/media/dvb/dvb-core/Makefile.lib	Fri Nov  8 10:55:14 2002
@@ -0,0 +1 @@
+obj-$(CONFIG_DVB_CORE)		+= crc32.o


--
dwmw2



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Switch DVB to generic crc32.
  2002-11-08 11:12 Switch DVB to generic crc32 David Woodhouse
@ 2002-11-08 13:57 ` Holger Waechtler
  2002-11-08 14:14   ` David Woodhouse
  2002-11-08 16:21   ` Alan Cox
  0 siblings, 2 replies; 6+ messages in thread
From: Holger Waechtler @ 2002-11-08 13:57 UTC (permalink / raw)
  To: David Woodhouse; +Cc: torvalds, alan, linux-kernel

David Woodhouse wrote:
> Not entirely sure why the DVB core code has its own crc32 table -- not only 
> should it be using the one the kernel provides, but AFAICT nothing in the 
> tree actually seem to _use_ its dvb_set_crc32() function anyway.

the crc32 table was defined because the same driver works for 2.4 
kernels, there we need our own crc32 implementation. I'll check if we 
can use the generic code in the kernel and then move the dvb_crc32 code 
into the 2.4 compatibility file compat.c

That the crc32 check is currently not called by the software 
demultiplexer is a known bug, it's already fixed in local CVS and will 
get into the kernel with the next patchset. I'm currently preparing this 
patchset but want to test it a little more.

Alan: do you have doubts or is there a reason not to apply the last 
patchset I sent you on Tue, 29 Oct 2002? (well - it was kind of huge, 
but all the namespace fixes and cleanups should justify the patch's 
size, not?)

Holger


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Switch DVB to generic crc32.
  2002-11-08 13:57 ` Holger Waechtler
@ 2002-11-08 14:14   ` David Woodhouse
  2002-11-08 15:21     ` Holger Waechtler
  2002-11-08 16:21   ` Alan Cox
  1 sibling, 1 reply; 6+ messages in thread
From: David Woodhouse @ 2002-11-08 14:14 UTC (permalink / raw)
  To: Holger Waechtler; +Cc: torvalds, alan, linux-kernel


holger@convergence.de said:
>  the crc32 table was defined because the same driver works for 2.4
> kernels, there we need our own crc32 implementation.

JFFS2 in 2.4 has the same problem. The fix is to backport the 2.5 crc32 
code so that 2.4 isn't gratuitously different. That patch has been sent to 
Alan already, I believe it's going to be sent to Marcelo for 2.4.21-pre1.

--
dwmw2



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Switch DVB to generic crc32.
  2002-11-08 14:14   ` David Woodhouse
@ 2002-11-08 15:21     ` Holger Waechtler
  2002-11-08 15:25       ` David Woodhouse
  0 siblings, 1 reply; 6+ messages in thread
From: Holger Waechtler @ 2002-11-08 15:21 UTC (permalink / raw)
  To: David Woodhouse; +Cc: torvalds, alan, linux-kernel

Hi David,

I'm looking on the generic crc32 code right now, but need some time to 
completely understand the code. Have you checked that this code 
implements the same generator polynomial as defined in the DVB standard?

Holger


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Switch DVB to generic crc32.
  2002-11-08 15:21     ` Holger Waechtler
@ 2002-11-08 15:25       ` David Woodhouse
  0 siblings, 0 replies; 6+ messages in thread
From: David Woodhouse @ 2002-11-08 15:25 UTC (permalink / raw)
  To: Holger Waechtler; +Cc: torvalds, alan, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 273 bytes --]


holger@convergence.de said:
>  I'm looking on the generic crc32 code right now, but need some time
> to  completely understand the code. Have you checked that this code
> implements the same generator polynomial as defined in the DVB
> standard? 

sort of...



--
dwmw2


[-- Attachment #2: testfish.c --]
[-- Type: text/plain , Size: 3846 bytes --]

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/crc32.h>

static u32 
dvb_crc_table[256] = {
	0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
	0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
	0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7,
	0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
	0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3,
	0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
	0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef,
	0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
	0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb,
	0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
	0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
	0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
	0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4,
	0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
	0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08,
	0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
	0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc,
	0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
	0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050,
	0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
	0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
	0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
	0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1,
	0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
	0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5,
	0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
	0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9,
	0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
	0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd,
	0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
	0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
	0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
	0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2,
	0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
	0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e,
	0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
	0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a,
	0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
	0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676,
	0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
	0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
	0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
	0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4};

u32 dvb_crc32(u8 *data, int len)
{
	int i;
	u32 crc = 0xffffffff;

	for (i=0; i<len; i++)
                crc = (crc << 8) ^ dvb_crc_table[((crc >> 24) ^ *data++) & 0xff];
	return crc;
}

int fish(void)
{

	printk("dvb_crc32 is %08x\n", dvb_crc32("fishyfishyfishies", 13));
	printk("crc32_le(0) %08x\n", crc32_le(0,     "fishyfishyfishies", 13));
	printk("crc32_le(-1) %08x\n", crc32_le(-1,     "fishyfishyfishies", 13));
	printk("crc32_be(0) %08x\n", crc32_be(0,     "fishyfishyfishies", 13));
	printk("crc32_le(-1) %08x\n", crc32_be(-1,     "fishyfishyfishies", 13));

}
module_init(fish);

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Switch DVB to generic crc32.
  2002-11-08 13:57 ` Holger Waechtler
  2002-11-08 14:14   ` David Woodhouse
@ 2002-11-08 16:21   ` Alan Cox
  1 sibling, 0 replies; 6+ messages in thread
From: Alan Cox @ 2002-11-08 16:21 UTC (permalink / raw)
  To: Holger Waechtler
  Cc: David Woodhouse, Linus Torvalds, Linux Kernel Mailing List

On Fri, 2002-11-08 at 13:57, Holger Waechtler wrote:
> Alan: do you have doubts or is there a reason not to apply the last 
> patchset I sent you on Tue, 29 Oct 2002? (well - it was kind of huge, 
> but all the namespace fixes and cleanups should justify the patch's 
> size, not?)

I've just been rather busy thats all


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2002-11-08 15:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-11-08 11:12 Switch DVB to generic crc32 David Woodhouse
2002-11-08 13:57 ` Holger Waechtler
2002-11-08 14:14   ` David Woodhouse
2002-11-08 15:21     ` Holger Waechtler
2002-11-08 15:25       ` David Woodhouse
2002-11-08 16:21   ` Alan Cox

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.