• Christophe Leroy's avatar
    powerpc32: rewrite csum_partial_copy_generic() based on copy_tofrom_user() · 7aef4136
    Christophe Leroy authored
    csum_partial_copy_generic() does the same as copy_tofrom_user and also
    calculates the checksum during the copy. Unlike copy_tofrom_user(),
    the existing version of csum_partial_copy_generic() doesn't take
    benefit of the cache.
    
    This patch is a rewrite of csum_partial_copy_generic() based on
    copy_tofrom_user().
    The previous version of csum_partial_copy_generic() was handling
    errors. Now we have the checksum wrapper functions to handle the error
    case like in powerpc64 so we can make the error case simple:
    just return -EFAULT.
    copy_tofrom_user() only has r12 available => we use it for the
    checksum r7 and r8 which contains pointers to error feedback are used,
    so we stack them.
    
    On a TCP benchmark using socklib on the loopback interface on which
    checksum offload and scatter/gather have been deactivated, we get
    about 20% performance increase.
    Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: default avatarScott Wood <oss@buserror.net>
    7aef4136
checksum_32.S 5.91 KB