All of lore.kernel.org
 help / color / mirror / Atom feed
From: Auke Kok <auke-jan.h.kok@intel.com>
To: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
Cc: "Kok, Auke-jan H" <auke-jan.h.kok@intel.com>,
	'Jeff Garzik' <jgarzik@pobox.com>,
	'Andrew Morton' <akpm@osdl.org>,
	'NetDev' <netdev@vger.kernel.org>,
	'Linux Kernel Mailing List' <linux-kernel@vger.kernel.org>,
	"Brandeburg, Jesse" <jesse.brandeburg@intel.com>,
	"Luck, Tony" <tony.luck@intel.com>,
	linux-ia64@vger.kernel.org
Subject: Re: e1000: include <net/ip6_checksum.h> for IA64
Date: Thu, 09 Nov 2006 02:07:09 +0000	[thread overview]
Message-ID: <45528D4D.4020908@intel.com> (raw)
In-Reply-To: <000201c70396$7c049000$ff0da8c0@amr.corp.intel.com>

Chen, Kenneth W wrote:
> Chen, Kenneth wrote on Wednesday, November 08, 2006 4:10 PM
>> Auke Kok wrote on Wednesday, November 08, 2006 9:49 AM
>>> Of course, someone really should come up with an asm version for ia64 of the
>>> missing function ;)
>> Sure, absolutely.  Here is an implementation for ia64.  Tested heavily. Tony, please > merge.

Applauded-by: Auke Kok <auke-jan.h.kok@intel.com> ;)

Cheers,

Auke

> 
> 
> Hmm.  Forgot about the signed-off line.  Here it is:
> 
> Signed-off-by: Ken Chen <kenneth.w.chen@intel.com> 
> 
> 
> 
> [patch] implement csum_ipv6_magic for ia64. The asm version is 3.4 times faster than
>         the generic version.
> 
> --- ./arch/ia64/lib/ip_fast_csum.S.orig	2006-11-08 12:26:28.000000000 -0800
> +++ ./arch/ia64/lib/ip_fast_csum.S	2006-11-08 16:39:24.000000000 -0800
> @@ -8,8 +8,8 @@
>   *      in0: address of buffer to checksum (char *)
>   *      in1: length of the buffer (int)
>   *
> - * Copyright (C) 2002 Intel Corp.
> - * Copyright (C) 2002 Ken Chen <kenneth.w.chen@intel.com>
> + * Copyright (C) 2002, 2006 Intel Corp.
> + * Copyright (C) 2002, 2006 Ken Chen <kenneth.w.chen@intel.com>
>   */
>  
>  #include <asm/asmmacro.h>
> @@ -25,6 +25,9 @@
>  
>  #define in0	r32
>  #define in1	r33
> +#define in2	r34
> +#define in3	r35
> +#define in4	r36
>  #define ret0	r8
>  
>  GLOBAL_ENTRY(ip_fast_csum)
> @@ -88,3 +91,51 @@ GLOBAL_ENTRY(ip_fast_csum)
>  	mov	b0=r34
>  	br.ret.sptk.many b0
>  END(ip_fast_csum)
> +
> +GLOBAL_ENTRY(csum_ipv6_magic)
> +	ld4	r20=[in0],4
> +	ld4	r21=[in1],4
> +	dep	r15=in2,in3,16,16
> +	;;
> +	ld4	r22=[in0],4
> +	ld4	r23=[in1],4
> +	mux1	r15=r15,@rev
> +	;;
> +	ld4	r24=[in0],4
> +	ld4	r25=[in1],4
> +	shr.u	r15=r15,32
> +	add	r16=r20,r21
> +	add	r17=r22,r23
> +	;;
> +	ld4	r26=[in0],4
> +	ld4	r27=[in1],4
> +	add	r18=r24,r25
> +	add	r8=r16,r17
> +	;;
> +	add	r19=r26,r27
> +	add	r8=r8,r18
> +	;;
> +	add	r8=r8,r19
> +	add	r15=r15,in4
> +	;;
> +	add	r8=r8,r15
> +	;;
> +	shr.u	r10=r8,16	// now fold sum into short
> +	zxt2	r11=r8
> +	;;
> +	add	r8=r10,r11
> +	;;
> +	shr.u	r10=r8,16	// yeah, keep it rolling
> +	zxt2	r11=r8
> +	;;
> +	add	r8=r10,r11
> +	;;
> +	shr.u	r10=r8,16	// three times lucky
> +	zxt2	r11=r8
> +	;;
> +	add	r8=r10,r11
> +	mov	r9=0xffff
> +	;;
> +	andcm	r8=r9,r8
> +	br.ret.sptk.many b0
> +END(csum_ipv6_magic)
> --- ./include/asm-ia64/checksum.h.orig	2006-11-08 16:52:16.000000000 -0800
> +++ ./include/asm-ia64/checksum.h	2006-11-08 17:01:09.000000000 -0800
> @@ -73,4 +73,10 @@ csum_fold (unsigned int sum)
>  	return ~sum;
>  }
>  
> +#define _HAVE_ARCH_IPV6_CSUM	1
> +struct in6_addr;
> +extern unsigned short int csum_ipv6_magic(struct in6_addr *saddr,
> +	struct in6_addr *daddr, __u32 len, unsigned short proto,
> +	unsigned int csum);
> +
>  #endif /* _ASM_IA64_CHECKSUM_H */
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


WARNING: multiple messages have this Message-ID (diff)
From: Auke Kok <auke-jan.h.kok@intel.com>
To: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
Cc: "Kok, Auke-jan H" <auke-jan.h.kok@intel.com>,
	"'Jeff Garzik'" <jgarzik@pobox.com>,
	"'Andrew Morton'" <akpm@osdl.org>,
	"'NetDev'" <netdev@vger.kernel.org>,
	"'Linux Kernel Mailing List'" <linux-kernel@vger.kernel.org>,
	"Brandeburg, Jesse" <jesse.brandeburg@intel.com>,
	"Luck, Tony" <tony.luck@intel.com>,
	linux-ia64@vger.kernel.org
Subject: Re: e1000: include <net/ip6_checksum.h> for IA64
Date: Wed, 08 Nov 2006 18:07:09 -0800	[thread overview]
Message-ID: <45528D4D.4020908@intel.com> (raw)
In-Reply-To: <000201c70396$7c049000$ff0da8c0@amr.corp.intel.com>

Chen, Kenneth W wrote:
> Chen, Kenneth wrote on Wednesday, November 08, 2006 4:10 PM
>> Auke Kok wrote on Wednesday, November 08, 2006 9:49 AM
>>> Of course, someone really should come up with an asm version for ia64 of the
>>> missing function ;)
>> Sure, absolutely.  Here is an implementation for ia64.  Tested heavily. Tony, please > merge.

Applauded-by: Auke Kok <auke-jan.h.kok@intel.com> ;)

Cheers,

Auke

> 
> 
> Hmm.  Forgot about the signed-off line.  Here it is:
> 
> Signed-off-by: Ken Chen <kenneth.w.chen@intel.com> 
> 
> 
> 
> [patch] implement csum_ipv6_magic for ia64. The asm version is 3.4 times faster than
>         the generic version.
> 
> --- ./arch/ia64/lib/ip_fast_csum.S.orig	2006-11-08 12:26:28.000000000 -0800
> +++ ./arch/ia64/lib/ip_fast_csum.S	2006-11-08 16:39:24.000000000 -0800
> @@ -8,8 +8,8 @@
>   *      in0: address of buffer to checksum (char *)
>   *      in1: length of the buffer (int)
>   *
> - * Copyright (C) 2002 Intel Corp.
> - * Copyright (C) 2002 Ken Chen <kenneth.w.chen@intel.com>
> + * Copyright (C) 2002, 2006 Intel Corp.
> + * Copyright (C) 2002, 2006 Ken Chen <kenneth.w.chen@intel.com>
>   */
>  
>  #include <asm/asmmacro.h>
> @@ -25,6 +25,9 @@
>  
>  #define in0	r32
>  #define in1	r33
> +#define in2	r34
> +#define in3	r35
> +#define in4	r36
>  #define ret0	r8
>  
>  GLOBAL_ENTRY(ip_fast_csum)
> @@ -88,3 +91,51 @@ GLOBAL_ENTRY(ip_fast_csum)
>  	mov	b0=r34
>  	br.ret.sptk.many b0
>  END(ip_fast_csum)
> +
> +GLOBAL_ENTRY(csum_ipv6_magic)
> +	ld4	r20=[in0],4
> +	ld4	r21=[in1],4
> +	dep	r15=in2,in3,16,16
> +	;;
> +	ld4	r22=[in0],4
> +	ld4	r23=[in1],4
> +	mux1	r15=r15,@rev
> +	;;
> +	ld4	r24=[in0],4
> +	ld4	r25=[in1],4
> +	shr.u	r15=r15,32
> +	add	r16=r20,r21
> +	add	r17=r22,r23
> +	;;
> +	ld4	r26=[in0],4
> +	ld4	r27=[in1],4
> +	add	r18=r24,r25
> +	add	r8=r16,r17
> +	;;
> +	add	r19=r26,r27
> +	add	r8=r8,r18
> +	;;
> +	add	r8=r8,r19
> +	add	r15=r15,in4
> +	;;
> +	add	r8=r8,r15
> +	;;
> +	shr.u	r10=r8,16	// now fold sum into short
> +	zxt2	r11=r8
> +	;;
> +	add	r8=r10,r11
> +	;;
> +	shr.u	r10=r8,16	// yeah, keep it rolling
> +	zxt2	r11=r8
> +	;;
> +	add	r8=r10,r11
> +	;;
> +	shr.u	r10=r8,16	// three times lucky
> +	zxt2	r11=r8
> +	;;
> +	add	r8=r10,r11
> +	mov	r9=0xffff
> +	;;
> +	andcm	r8=r9,r8
> +	br.ret.sptk.many b0
> +END(csum_ipv6_magic)
> --- ./include/asm-ia64/checksum.h.orig	2006-11-08 16:52:16.000000000 -0800
> +++ ./include/asm-ia64/checksum.h	2006-11-08 17:01:09.000000000 -0800
> @@ -73,4 +73,10 @@ csum_fold (unsigned int sum)
>  	return ~sum;
>  }
>  
> +#define _HAVE_ARCH_IPV6_CSUM	1
> +struct in6_addr;
> +extern unsigned short int csum_ipv6_magic(struct in6_addr *saddr,
> +	struct in6_addr *daddr, __u32 len, unsigned short proto,
> +	unsigned int csum);
> +
>  #endif /* _ASM_IA64_CHECKSUM_H */
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


  reply	other threads:[~2006-11-09  2:07 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-08 17:48 e1000: include <net/ip6_checksum.h> for IA64 Auke Kok
2006-11-08 19:06 ` Andrew Morton
2006-11-09  0:10 ` Chen, Kenneth W
2006-11-09  0:10   ` Chen, Kenneth W
2006-11-09  0:32   ` Chen, Kenneth W
2006-11-09  0:32     ` Chen, Kenneth W
2006-11-09  2:07     ` Auke Kok [this message]
2006-11-09  2:07       ` Auke Kok

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=45528D4D.4020908@intel.com \
    --to=auke-jan.h.kok@intel.com \
    --cc=akpm@osdl.org \
    --cc=jesse.brandeburg@intel.com \
    --cc=jgarzik@pobox.com \
    --cc=kenneth.w.chen@intel.com \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=tony.luck@intel.com \
    /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.