• Maxime Méré's avatar
    crypto: stm32/cryp - use dma when possible · fb11a4f6
    Maxime Méré authored
    Use DMA when buffer are aligned and with expected size.
    
    If buffer are correctly aligned and bigger than 1KB we have some
    performance gain:
    
    With DMA enable:
    $ openssl speed -evp aes-256-cbc -engine afalg -elapsed
    The 'numbers' are in 1000s of bytes per second processed.
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
    aes-256-cbc        120.02k      406.78k     1588.82k     5873.32k    26020.52k    34258.94k
    
    Without DMA:
    $ openssl speed -evp aes-256-cbc -engine afalg -elapsed
    The 'numbers' are in 1000s of bytes per second processed.
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
    aes-256-cbc        121.06k      419.95k     1112.23k     1897.47k     2362.03k     2386.60k
    
    With DMA:
    extract of
    $ modprobe tcrypt mode=500
    testing speed of async cbc(aes) (stm32-cbc-aes) encryption
    tcrypt: test 14 (256 bit key,   16 byte blocks): 1 operation in  1679 cycles (16 bytes)
    tcrypt: test 15 (256 bit key,   64 byte blocks): 1 operation in  1893 cycles (64 bytes)
    tcrypt: test 16 (256 bit key,  128 byte blocks): 1 operation in  1760 cycles (128 bytes)
    tcrypt: test 17 (256 bit key,  256 byte blocks): 1 operation in  2154 cycles (256 bytes)
    tcrypt: test 18 (256 bit key, 1024 byte blocks): 1 operation in  2132 cycles (1024 bytes)
    tcrypt: test 19 (256 bit key, 1424 byte blocks): 1 operation in  2466 cycles (1424 bytes)
    tcrypt: test 20 (256 bit key, 4096 byte blocks): 1 operation in  4040 cycles (4096 bytes)
    
    Without DMA:
    $ modprobe tcrypt mode=500
    tcrypt: test 14 (256 bit key,   16 byte blocks): 1 operation in  1671 cycles (16 bytes)
    tcrypt: test 15 (256 bit key,   64 byte blocks): 1 operation in  2263 cycles (64 bytes)
    tcrypt: test 16 (256 bit key,  128 byte blocks): 1 operation in  2881 cycles (128 bytes)
    tcrypt: test 17 (256 bit key,  256 byte blocks): 1 operation in  4270 cycles (256 bytes)
    tcrypt: test 18 (256 bit key, 1024 byte blocks): 1 operation in 11537 cycles (1024 bytes)
    tcrypt: test 19 (256 bit key, 1424 byte blocks): 1 operation in 15025 cycles (1424 bytes)
    tcrypt: test 20 (256 bit key, 4096 byte blocks): 1 operation in 40747 cycles (4096 bytes)
    Signed-off-by: default avatarAlexandre Torgue <alexandre.torgue@foss.st.com>
    Signed-off-by: default avatarMaxime Méré <maxime.mere@foss.st.com>
    Signed-off-by: default avatarNicolas Toromanoff <nicolas.toromanoff@foss.st.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    fb11a4f6
stm32-cryp.c 67.9 KB