[626] in linux-net channel archive
Checksum bug in 1.3.7
daemon@ATHENA.MIT.EDU (Alan Cox)
Fri Jul 7 00:38:04 1995
Date: Thu, 6 Jul 95 19:32 BST
From: iialan@iifeak.swan.ac.uk (Alan Cox)
To: linux-net@vger.rutgers.edu, torvalds@cs.helsinki.fi, zssz@lx.ncu.edu.pl
This isnt a fix so much as a back out of the checksum.c changes, but it does
seem to be happier 8). Multicast people also need to add a +15 in the
dev_alloc_skb() in net/ipv4/ip.c:ip_loopback()
Alan
--- checksum.c.bust Thu Jul 6 19:04:01 1995
+++ checksum.c Thu Jul 6 19:11:30 1995
@@ -175,15 +175,15 @@
jz 7f
cmpl $2, %%ecx
jb 5f
- movw %%fs:(%%esi), %%cx
+ movw %%fs:(%%esi), %%dx
leal 2(%%esi), %%esi
- movw %%cx, (%%edi)
+ movw %%dx, (%%edi)
leal 2(%%edi), %%edi
je 6f
shll $16,%%edx
-5: movb %%fs:(%%esi), %%cl
- movb %%cl, (%%edi)
-6: addl %%ecx, %%eax
+5: movb %%fs:(%%esi), %%dl
+ movb %%dl, (%%edi)
+6: addl %%edx, %%eax
adcl $0, %%eax
7:
"
@@ -192,6 +192,9 @@
: "bx", "cx", "dx", "si", "di" );
return(sum);
}
+
+
+
/*
* copy from ds while checksumming, otherwise like csum_partial
*/
@@ -270,15 +273,15 @@
jz 7f
cmpl $2, %%ecx
jb 5f
- movw (%%esi), %%cx
+ movw (%%esi), %%dx
leal 2(%%esi), %%esi
- movw %%cx, (%%edi)
+ movw %%dx, (%%edi)
leal 2(%%edi), %%edi
je 6f
shll $16,%%edx
-5: movb (%%esi), %%cl
- movb %%cl, (%%edi)
-6: addl %%ecx, %%eax
+5: movb (%%esi), %%dl
+ movb %%dl, (%%edi)
+6: addl %%edx, %%eax
adcl $0, %%eax
7:
"
@@ -287,3 +290,6 @@
: "bx", "cx", "dx", "si", "di" );
return(sum);
}
+
+
+