Here's a reference to the DragonFly code:
http://www.dragonflybsd.org/cvsweb/src/sys/cpu/i386/misc/in_cksum2.s
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/in_cksum.c
It's pretty simple. The core 1's complement checksum is now written
in machine-dependant assembly and O
AIL PROTECTED]>
To: "zhouyi zhou" <[EMAIL PROTECTED]>
Cc: ; <[EMAIL PROTECTED]>
Sent: Monday, July 09, 2007 5:56 PM
Subject: Re: rewrite src/sys/i386/i386/in_cksum.c
Quoting zhouyi zhou <[EMAIL PROTECTED]> (from Mon, 9 Jul 2007
10:55:47 +0800):
> Hey,
>
Quoting zhouyi zhou <[EMAIL PROTECTED]> (from Mon, 9 Jul 2007
10:55:47 +0800):
Hey,
Since FreeBSD update gcc from 3.4.x to 4.2.0, the FreeBSD gdb
remote debugger in i386 platform
will find the TCP/UPD checksum will not be computed right, when
calling macro in_cksum
which calls in_cksum
%edx,0xffe8(%ebp)
0x080487af : mov0xffe4(%ebp),%eax
0x080487b2 : add$0xc,%eax
0x080487b5 : mov(%eax),%eax
0x080487b7 : mov 0xffe8(%ebp),%edx
0x080487ba : adc%eax,%edx
0x080487bc : mov%edx,0xffe8(%ebp)
So, I suggest rewrite src/sys/i386/i386/in_cksum.c in fo
Sorry, previously send the preprocessed version of in_cksum.c:
What really needs to be replaced is for example:
408 if (mlen >= 16) {
409 ADD(0);
410 ADDC(4);
411 ADDC(8);
412 ADDC(12);
4
5 matches
Mail list logo