Originally both SW and HW crypto PMDs use rte_crypot_op based API to process the crypto workload asynchronously. This way provides uniformity to both PMD types, but also introduce unnecessary performance penalty to SW PMDs that have to "simulate" HW async behavior (crypto-ops enqueue/dequeue, HW addresses computations, storing/dereferencing user provided data (mbuf) for each crypto-op, etc).
The aim is to introduce a new optional API for SW crypto-devices to perform crypto processing in a synchronous manner. Marcin Smoczynski (6): cryptodev: introduce cpu crypto support API crypto/aesni_gcm: cpu crypto support security: add cpu crypto action type ipsec: introduce support for cpu crypto mode examples/ipsec-secgw: cpu crypto support examples/ipsec-secgw: cpu crypto testing drivers/crypto/aesni_gcm/aesni_gcm_ops.h | 9 + drivers/crypto/aesni_gcm/aesni_gcm_pmd.c | 149 ++++++++++++++++- drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c | 3 + .../crypto/aesni_gcm/aesni_gcm_pmd_private.h | 18 +- examples/ipsec-secgw/ipsec.c | 12 +- examples/ipsec-secgw/ipsec_process.c | 134 +++++++++------ examples/ipsec-secgw/sa.c | 33 +++- examples/ipsec-secgw/test/common_defs.sh | 21 +++ examples/ipsec-secgw/test/linux_test4.sh | 11 +- examples/ipsec-secgw/test/linux_test6.sh | 11 +- .../test/trs_3descbc_sha1_common_defs.sh | 8 +- .../test/trs_aescbc_sha1_common_defs.sh | 8 +- .../test/trs_aesctr_sha1_common_defs.sh | 8 +- .../test/tun_3descbc_sha1_common_defs.sh | 8 +- .../test/tun_aescbc_sha1_common_defs.sh | 8 +- .../test/tun_aesctr_sha1_common_defs.sh | 8 +- lib/librte_cryptodev/rte_crypto_sym.h | 62 ++++++- lib/librte_cryptodev/rte_cryptodev.c | 30 ++++ lib/librte_cryptodev/rte_cryptodev.h | 20 +++ lib/librte_cryptodev/rte_cryptodev_pmd.h | 19 +++ .../rte_cryptodev_version.map | 1 + lib/librte_ipsec/esp_inb.c | 154 +++++++++++++++--- lib/librte_ipsec/esp_outb.c | 134 +++++++++++++-- lib/librte_ipsec/misc.h | 118 ++++++++++++++ lib/librte_ipsec/rte_ipsec.h | 18 +- lib/librte_ipsec/sa.c | 126 +++++++++++--- lib/librte_ipsec/sa.h | 17 ++ lib/librte_ipsec/ses.c | 3 +- lib/librte_security/rte_security.h | 6 +- 29 files changed, 990 insertions(+), 167 deletions(-) -- 2.17.1