Comparing CPU/SOC performance?

Nah, ipq40xx does not have a NSS (Network Subsystem - Dedicated CPU-cores + 3 Ethernet-Macs + Switch). Instead it's called ESS (Ethernet Subsystem) over there which just includes one Ethernet-Mac and the internal Switch + transceivers.

So the crypto on the ipq40xx is just a on a DMA channel and can used by standard ALG interface.

This is a list of the currently supported cryptos (from /proc/crypto)

name         : hmac(sha256)
driver       : hmac-sha256-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ahash
async        : yes
blocksize    : 64
digestsize   : 32

name         : hmac(sha1)
driver       : hmac-sha1-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ahash
async        : yes
blocksize    : 64
digestsize   : 20

name         : sha256
driver       : sha256-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ahash
async        : yes
blocksize    : 64
digestsize   : 32

name         : sha1
driver       : sha1-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ahash
async        : yes
blocksize    : 64
digestsize   : 20

name         : cbc(des3_ede)
driver       : cbc-3des-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ablkcipher
async        : yes
blocksize    : 8 
min keysize  : 24
max keysize  : 24
ivsize       : 8 
geniv        : <default>

name         : ecb(des3_ede)
driver       : ecb-3des-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ablkcipher
async        : yes
blocksize    : 8 
min keysize  : 24
max keysize  : 24
ivsize       : 0 
geniv        : <default>

name         : cbc(des)
driver       : cbc-des-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ablkcipher
async        : yes
blocksize    : 8 
min keysize  : 8 
max keysize  : 8 
ivsize       : 8 
geniv        : <default>

name         : ecb(des)
driver       : ecb-des-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ablkcipher
async        : yes
blocksize    : 8 
min keysize  : 8 
max keysize  : 8 
ivsize       : 0 
geniv        : <default>

name         : xts(aes)
driver       : xts-aes-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : <default>

name         : ctr(aes)
driver       : ctr-aes-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : <default>

name         : cbc(aes)
driver       : cbc-aes-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : <default>

name         : ecb(aes)
driver       : ecb-aes-qce
module       : kernel
priority     : 300
refcnt       : 1 
selftest     : passed
internal     : no
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : <default>

So there are "direct" offloads available for hmac-sha256, sha256, xts-aes, ctr-aes, cbc-aes and ecb-aes.
(I skipped the (3)des and sha1 since they should not be used anymore).

1 Like