2013-12-09 16:54:10

by Karl Hiramoto

[permalink] [raw]
Subject: authenc(hmac(sha1-generic),atmel-cbc-aes) not using HW SHA

Hi,

I'm using the HW crypto drivers at drivers/crypto/atmel-{sha,aes}.c


When I startup a ipsec tunnel (strongswan) /proc/crypto shows:
"authenc(hmac(sha1-generic),atmel-cbc-aes)"

I can tell the SHA hardware is not being used now as "sha_transform" is
at the top of the list with oprofile, and the HW interrupts on the SHA
hardware are not incrementing.


I would want it to show that it's using HW acceleration eg:
authenc(hmac(atmel-sha1),atmel-cbc-aes)



Can you please point me in the right direction of what's missing?

Do I just need to create and register a function for the
shash_alg.import() and .export()? Or is there a different/better way?


cat /proc/crypto
name : authenc(hmac(sha1),cbc(aes))
driver : authenc(hmac(sha1-generic),atmel-cbc-aes)
module : kernel
priority : 1000
refcnt : 3
selftest : passed
type : aead
async : yes
blocksize : 16
ivsize : 16
maxauthsize : 20
geniv : <built-in>

name : hmac(sha1)
driver : hmac(sha1-generic)
module : kernel
priority : 0
refcnt : 5
selftest : passed
type : shash
blocksize : 64
digestsize : 20

name : cbc(aes)
driver : atmel-cbc-aes
module : kernel
priority : 100
refcnt : 3
selftest : passed
type : givcipher
async : yes
blocksize : 16
min keysize : 16
max keysize : 32
ivsize : 16
geniv : eseqiv

name : cbc(des3_ede)
driver : atmel-cbc-tdes
module : kernel
priority : 100
refcnt : 1
selftest : passed
type : givcipher
async : yes
blocksize : 8
min keysize : 16
max keysize : 24
ivsize : 8
geniv : eseqiv

name : cbc(des)
driver : atmel-cbc-des
module : kernel
priority : 100
refcnt : 1
selftest : passed
type : givcipher
async : yes
blocksize : 8
min keysize : 8
max keysize : 8
ivsize : 8
geniv : eseqiv

name : sha512
driver : atmel-sha512
module : atmel_sha
priority : 100
refcnt : 1
selftest : passed
type : ahash
async : yes
blocksize : 128
digestsize : 64

name : sha384
driver : atmel-sha384
module : atmel_sha
priority : 100
refcnt : 1
selftest : passed
type : ahash
async : yes
blocksize : 128
digestsize : 48

name : sha224
driver : atmel-sha224
module : atmel_sha
priority : 100
refcnt : 1
selftest : passed
type : ahash
async : yes
blocksize : 64
digestsize : 28

name : sha256
driver : atmel-sha256
module : atmel_sha
priority : 100
refcnt : 1
selftest : passed
type : ahash
async : yes
blocksize : 64
digestsize : 32

name : sha1
driver : atmel-sha1
module : atmel_sha
priority : 100
refcnt : 1
selftest : passed
type : ahash
async : yes
blocksize : 64
digestsize : 20

name : ofb(des3_ede)
driver : atmel-ofb-tdes
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 8
min keysize : 16
max keysize : 24
ivsize : 8
geniv : <default>

name : cfb32(des3_ede)
driver : atmel-cfb32-tdes
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 4
min keysize : 16
max keysize : 16
ivsize : 8
geniv : <default>

name : cfb16(des3_ede)
driver : atmel-cfb16-tdes
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 2
min keysize : 16
max keysize : 16
ivsize : 8
geniv : <default>

name : cfb8(des3_ede)
driver : atmel-cfb8-tdes
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 1
min keysize : 16
max keysize : 16
ivsize : 8
geniv : <default>

name : cfb(des3_ede)
driver : atmel-cfb-tdes
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 8
min keysize : 16
max keysize : 16
ivsize : 8
geniv : <default>

name : cbc(des3_ede)
driver : atmel-cbc-tdes
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 8
min keysize : 16
max keysize : 24
ivsize : 8
geniv : <default>

name : ecb(des3_ede)
driver : atmel-ecb-tdes
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 8
min keysize : 16
max keysize : 24
ivsize : 0
geniv : <default>

name : ofb(des)
driver : atmel-ofb-des
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 8
min keysize : 8
max keysize : 8
ivsize : 8
geniv : <default>

name : cfb32(des)
driver : atmel-cfb32-des
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 4
min keysize : 8
max keysize : 8
ivsize : 8
geniv : <default>

name : cfb16(des)
driver : atmel-cfb16-des
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 2
min keysize : 8
max keysize : 8
ivsize : 8
geniv : <default>

name : cfb8(des)
driver : atmel-cfb8-des
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 1
min keysize : 8
max keysize : 8
ivsize : 8
geniv : <default>

name : cfb(des)
driver : atmel-cfb-des
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 8
min keysize : 8
max keysize : 8
ivsize : 8
geniv : <default>

name : cbc(des)
driver : atmel-cbc-des
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 8
min keysize : 8
max keysize : 8
ivsize : 8
geniv : <default>

name : ecb(des)
driver : atmel-ecb-des
module : atmel_tdes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 8
min keysize : 8
max keysize : 8
ivsize : 0
geniv : <default>

name : cfb64(aes)
driver : atmel-cfb64-aes
module : atmel_aes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 8
min keysize : 16
max keysize : 32
ivsize : 16
geniv : <default>

name : ctr(aes)
driver : atmel-ctr-aes
module : atmel_aes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 16
min keysize : 16
max keysize : 32
ivsize : 16
geniv : <default>

name : cfb8(aes)
driver : atmel-cfb8-aes
module : atmel_aes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 8
min keysize : 16
max keysize : 32
ivsize : 16
geniv : <default>

name : cfb16(aes)
driver : atmel-cfb16-aes
module : atmel_aes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 2
min keysize : 16
max keysize : 32
ivsize : 16
geniv : <default>

name : cfb32(aes)
driver : atmel-cfb32-aes
module : atmel_aes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 4
min keysize : 16
max keysize : 32
ivsize : 16
geniv : <default>

name : cfb(aes)
driver : atmel-cfb-aes
module : atmel_aes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 16
min keysize : 16
max keysize : 32
ivsize : 16
geniv : <default>

name : ofb(aes)
driver : atmel-ofb-aes
module : atmel_aes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 16
min keysize : 16
max keysize : 32
ivsize : 16
geniv : <default>

name : cbc(aes)
driver : atmel-cbc-aes
module : atmel_aes
priority : 100
refcnt : 3
selftest : passed
type : ablkcipher
async : yes
blocksize : 16
min keysize : 16
max keysize : 32
ivsize : 16
geniv : <default>

name : ecb(aes)
driver : atmel-ecb-aes
module : atmel_aes
priority : 100
refcnt : 1
selftest : passed
type : ablkcipher
async : yes
blocksize : 16
min keysize : 16
max keysize : 32
ivsize : 0
geniv : <default>

name : stdrng
driver : krng
module : kernel
priority : 200
refcnt : 2
selftest : passed
type : rng
seedsize : 0

name : lzo
driver : lzo-generic
module : kernel
priority : 0
refcnt : 2
selftest : passed
type : compression

name : deflate
driver : deflate-generic
module : kernel
priority : 0
refcnt : 2
selftest : passed
type : compression

name : aes
driver : aes-generic
module : kernel
priority : 100
refcnt : 1
selftest : passed
type : cipher
blocksize : 16
min keysize : 16
max keysize : 32

name : des3_ede
driver : des3_ede-generic
module : kernel
priority : 0
refcnt : 1
selftest : passed
type : cipher
blocksize : 8
min keysize : 24
max keysize : 24

name : des
driver : des-generic
module : kernel
priority : 0
refcnt : 1
selftest : passed
type : cipher
blocksize : 8
min keysize : 8
max keysize : 8

name : sha1
driver : sha1-generic
module : kernel
priority : 0
refcnt : 3
selftest : passed
type : shash
blocksize : 64
digestsize : 20

name : md5
driver : md5-generic
module : kernel
priority : 0
refcnt : 1
selftest : passed
type : shash
blocksize : 64
digestsize : 16





Thanks,

Karl