crypto: caam - set descriptor sharing type to SERIAL
authorKim Phillips <kim.phillips@freescale.com>
Fri, 13 Jul 2012 22:49:28 +0000 (17:49 -0500)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 1 Aug 2012 09:47:31 +0000 (17:47 +0800)
SHARE_WAIT, whilst more optimal for association-less crypto,
has the ability to start thrashing the CCB descriptor/key
caches, given high levels of traffic across multiple security
associations (and thus keys).

Switch to using the SERIAL sharing type, which prefers
the last used CCB for the SA.  On a 2-DECO platform
such as the P3041, this can improve performance by
about 3.7%.

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/caam/caamalg.c
drivers/crypto/caam/caamhash.c
drivers/crypto/caam/caamrng.c

index 0c1ea8492eff632401a5750e36bc09b88eaed6fc..6b48295e218bfbad7972165d875142bda91c79e5 100644 (file)
@@ -205,7 +205,7 @@ static void init_sh_desc_key_aead(u32 *desc, struct caam_ctx *ctx,
 {
        u32 *key_jump_cmd;
 
-       init_sh_desc(desc, HDR_SHARE_WAIT);
+       init_sh_desc(desc, HDR_SHARE_SERIAL);
 
        /* Skip if already shared */
        key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
@@ -302,7 +302,7 @@ static int aead_set_sh_desc(struct crypto_aead *aead)
        desc = ctx->sh_desc_dec;
 
        /* aead_decrypt shared descriptor */
-       init_sh_desc(desc, HDR_SHARE_WAIT);
+       init_sh_desc(desc, HDR_SHARE_SERIAL);
 
        /* Skip if already shared */
        key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
@@ -564,7 +564,7 @@ static int ablkcipher_setkey(struct crypto_ablkcipher *ablkcipher,
 
        /* ablkcipher_encrypt shared descriptor */
        desc = ctx->sh_desc_enc;
-       init_sh_desc(desc, HDR_SHARE_WAIT);
+       init_sh_desc(desc, HDR_SHARE_SERIAL);
        /* Skip if already shared */
        key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
                                   JUMP_COND_SHRD);
@@ -605,7 +605,7 @@ static int ablkcipher_setkey(struct crypto_ablkcipher *ablkcipher,
        /* ablkcipher_decrypt shared descriptor */
        desc = ctx->sh_desc_dec;
 
-       init_sh_desc(desc, HDR_SHARE_WAIT);
+       init_sh_desc(desc, HDR_SHARE_SERIAL);
        /* Skip if already shared */
        key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
                                   JUMP_COND_SHRD);
index dca3c1904edab57040fc5c313e581e40cfc11d10..fbf3fe8b62f0b52161515f59b9d651b18ea73e65 100644 (file)
@@ -225,7 +225,7 @@ static inline void init_sh_desc_key_ahash(u32 *desc, struct caam_hash_ctx *ctx)
 {
        u32 *key_jump_cmd;
 
-       init_sh_desc(desc, HDR_SHARE_WAIT);
+       init_sh_desc(desc, HDR_SHARE_SERIAL);
 
        if (ctx->split_key_len) {
                /* Skip if already shared */
@@ -311,7 +311,7 @@ static int ahash_set_sh_desc(struct crypto_ahash *ahash)
        /* ahash_update shared descriptor */
        desc = ctx->sh_desc_update;
 
-       init_sh_desc(desc, HDR_SHARE_WAIT);
+       init_sh_desc(desc, HDR_SHARE_SERIAL);
 
        /* Import context from software */
        append_cmd(desc, CMD_SEQ_LOAD | LDST_SRCDST_BYTE_CONTEXT |
index ccedb54317e1620b6553aec96c0b7cf3198460de..d1939a9539c06a4204a26b65d3d743d46c2346d3 100644 (file)
@@ -193,7 +193,7 @@ static inline void rng_create_sh_desc(struct caam_rng_ctx *ctx)
        struct device *jrdev = ctx->jrdev;
        u32 *desc = ctx->sh_desc;
 
-       init_sh_desc(desc, HDR_SHARE_WAIT);
+       init_sh_desc(desc, HDR_SHARE_SERIAL);
 
        /* Propagate errors from shared to job descriptor */
        append_cmd(desc, SET_OK_NO_PROP_ERRORS | CMD_LOAD);