• Eric Biggers's avatar
    crypto: ahash - optimize performance when wrapping shash · 2f1f34c1
    Eric Biggers authored
    The "ahash" API provides access to both CPU-based and hardware offload-
    based implementations of hash algorithms.  Typically the former are
    implemented as "shash" algorithms under the hood, while the latter are
    implemented as "ahash" algorithms.  The "ahash" API provides access to
    both.  Various kernel subsystems use the ahash API because they want to
    support hashing hardware offload without using a separate API for it.
    
    Yet, the common case is that a crypto accelerator is not actually being
    used, and ahash is just wrapping a CPU-based shash algorithm.
    
    This patch optimizes the ahash API for that common case by eliminating
    the extra indirect call for each ahash operation on top of shash.
    
    It also fixes the double-counting of crypto stats in this scenario
    (though CONFIG_CRYPTO_STATS should *not* be enabled by anyone interested
    in performance anyway...), and it eliminates redundant checking of
    CRYPTO_TFM_NEED_KEY.  As a bonus, it also shrinks struct crypto_ahash.
    Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    2f1f34c1
ahash.c 18.2 KB