[PATCH v2 00/10] Chain crypto requests together at the DMA level

Romain Perier
2016-06-17T11:23:59Z

The Cryptographic Engines and Security Accelerators (CESA) supports
the TDMA chained mode support. When this mode is enabled and crypto
requests are chained at the DMA level, multiple crypto requests can be
handled by the hardware engine without requiring any software
intervention. This approach limits the number of interrupts generated
by the engines thus improving its throughput and making the whole system
behave nicely under heavy crypto load.

Benchmarking results with dmcrypt
=================================
I/O read I/O write
Before 81.7 MB/s 31.7 MB/s
After 129 MB/s 39.8 MB/s

Improvement +57.8 % +25.5 %

Romain Perier (10):
crypto: marvell: Add a macro constant for the size of the crypto queue
crypto: marvell: Check engine is not already running when enabling a
req
crypto: marvell: Fix wrong type check in dma functions
crypto: marvell: Copy IV vectors by DMA transfers for acipher requests
crypto: marvell: Move tdma chain out of mv_cesa_tdma_req and remove it
crypto: marvell: Add a complete operation for async requests
crypto: marvell: Move SRAM I/O operations to step functions
crypto: marvell: Add load balancing between engines
crypto: marvell: Add support for chaining crypto requests in TDMA mode
crypto: marvell: Increase the size of the crypto queue

drivers/crypto/marvell/cesa.c | 142 +++++++++++++++++++++++++++---------
drivers/crypto/marvell/cesa.h | 120 +++++++++++++++++++++---------
drivers/crypto/marvell/cipher.c | 157 ++++++++++++++++++++++++----------------
drivers/crypto/marvell/hash.c | 150 ++++++++++++++++++--------------------
drivers/crypto/marvell/tdma.c | 132 +++++++++++++++++++++++++++++++--
5 files changed, 483 insertions(+), 218 deletions(-)

--
2.7.4