]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc: Optimise 64bit csum_partial_copy_generic and add csum_and_copy_from_user
authorAnton Blanchard <anton@samba.org>
Mon, 2 Aug 2010 20:09:52 +0000 (20:09 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 2 Sep 2010 04:07:30 +0000 (14:07 +1000)
commit97af8a8aeadbce5a13cf9050639126b029f3b1c4
tree8f52a7648adb30012b01589892b71913cdbc4cd7
parent5e1b74abb49da7be1206f25ab7ee0e2274e532e4
powerpc: Optimise 64bit csum_partial_copy_generic and add csum_and_copy_from_user

We use the same core loop as the new csum_partial, adding in the
stores and exception handling code. To keep things simple we do all the
exception fixup in csum_and_copy_from_user. This wrapper function is
modelled on the generic checksum code and is careful to always calculate
a complete checksum even if we only copied part of the data to userspace.

To test this I forced checksumming on over loopback and ran socklib (a
simple TCP benchmark). On a POWER6 575 throughput improved by 19% with
this patch. If I forced both the sender and receiver onto the same cpu
(with the hope of shifting the benchmark from being cache bandwidth limited
to cpu limited), adding this patch improved performance by 55%

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/checksum.h
arch/powerpc/lib/Makefile
arch/powerpc/lib/checksum_64.S
arch/powerpc/lib/checksum_wrappers_64.c [new file with mode: 0644]