• Ard Biesheuvel's avatar
    ARM: 9286/1: crypto: Implement fused AES-CTR/GHASH version of GCM · b575b5a1
    Ard Biesheuvel authored
    On 32-bit ARM, AES in GCM mode takes full advantage of the ARMv8 Crypto
    Extensions when available, resulting in a performance of 6-7 cycles per
    byte for typical IPsec frames on cores such as Cortex-A53, using the
    generic GCM template encapsulating the accelerated AES-CTR and GHASH
    implementations.
    
    At such high rates, any time spent copying data or doing other poorly
    optimized work in the generic layer hurts disproportionately, and we can
    get a significant performance improvement by combining the optimized
    AES-CTR and GHASH implementations into a single GCM driver.
    
    On Cortex-A53, this results in a performance improvement of around 75%,
    and AES-256-GCM-128 with RFC4106 encapsulation runs in 4 cycles per
    byte.
    
    Note that this code takes advantage of the fact that kernel mode NEON is
    now supported in softirq context as well, and therefore does not provide
    a non-NEON fallback path at all. (AEADs are only callable in process or
    softirq context)
    Acked-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
    b575b5a1
ghash-ce-glue.c 19.8 KB