aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/caam
diff options
context:
space:
mode:
authorKim Phillips <kim.phillips@freescale.com>2012-07-13 18:49:28 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2012-08-01 05:47:31 -0400
commit61bb86bba169507a5f223b94b9176c32c84b4721 (patch)
tree265d8f59f76c2e6ff8aba29ea4663dff4033ab0a /drivers/crypto/caam
parent95bcaa39053ff518021572ca00ebf626ee8cbaf8 (diff)
crypto: caam - set descriptor sharing type to SERIAL
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>
Diffstat (limited to 'drivers/crypto/caam')
-rw-r--r--drivers/crypto/caam/caamalg.c8
-rw-r--r--drivers/crypto/caam/caamhash.c4
-rw-r--r--drivers/crypto/caam/caamrng.c2
3 files changed, 7 insertions, 7 deletions
diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c
index 0c1ea8492eff..6b48295e218b 100644
--- a/drivers/crypto/caam/caamalg.c
+++ b/drivers/crypto/caam/caamalg.c
@@ -205,7 +205,7 @@ static void init_sh_desc_key_aead(u32 *desc, struct caam_ctx *ctx,
205{ 205{
206 u32 *key_jump_cmd; 206 u32 *key_jump_cmd;
207 207
208 init_sh_desc(desc, HDR_SHARE_WAIT); 208 init_sh_desc(desc, HDR_SHARE_SERIAL);
209 209
210 /* Skip if already shared */ 210 /* Skip if already shared */
211 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | 211 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)
302 desc = ctx->sh_desc_dec; 302 desc = ctx->sh_desc_dec;
303 303
304 /* aead_decrypt shared descriptor */ 304 /* aead_decrypt shared descriptor */
305 init_sh_desc(desc, HDR_SHARE_WAIT); 305 init_sh_desc(desc, HDR_SHARE_SERIAL);
306 306
307 /* Skip if already shared */ 307 /* Skip if already shared */
308 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | 308 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
@@ -564,7 +564,7 @@ static int ablkcipher_setkey(struct crypto_ablkcipher *ablkcipher,
564 564
565 /* ablkcipher_encrypt shared descriptor */ 565 /* ablkcipher_encrypt shared descriptor */
566 desc = ctx->sh_desc_enc; 566 desc = ctx->sh_desc_enc;
567 init_sh_desc(desc, HDR_SHARE_WAIT); 567 init_sh_desc(desc, HDR_SHARE_SERIAL);
568 /* Skip if already shared */ 568 /* Skip if already shared */
569 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | 569 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
570 JUMP_COND_SHRD); 570 JUMP_COND_SHRD);
@@ -605,7 +605,7 @@ static int ablkcipher_setkey(struct crypto_ablkcipher *ablkcipher,
605 /* ablkcipher_decrypt shared descriptor */ 605 /* ablkcipher_decrypt shared descriptor */
606 desc = ctx->sh_desc_dec; 606 desc = ctx->sh_desc_dec;
607 607
608 init_sh_desc(desc, HDR_SHARE_WAIT); 608 init_sh_desc(desc, HDR_SHARE_SERIAL);
609 /* Skip if already shared */ 609 /* Skip if already shared */
610 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | 610 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
611 JUMP_COND_SHRD); 611 JUMP_COND_SHRD);
diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c
index dca3c1904eda..fbf3fe8b62f0 100644
--- a/drivers/crypto/caam/caamhash.c
+++ b/drivers/crypto/caam/caamhash.c
@@ -225,7 +225,7 @@ static inline void init_sh_desc_key_ahash(u32 *desc, struct caam_hash_ctx *ctx)
225{ 225{
226 u32 *key_jump_cmd; 226 u32 *key_jump_cmd;
227 227
228 init_sh_desc(desc, HDR_SHARE_WAIT); 228 init_sh_desc(desc, HDR_SHARE_SERIAL);
229 229
230 if (ctx->split_key_len) { 230 if (ctx->split_key_len) {
231 /* Skip if already shared */ 231 /* Skip if already shared */
@@ -311,7 +311,7 @@ static int ahash_set_sh_desc(struct crypto_ahash *ahash)
311 /* ahash_update shared descriptor */ 311 /* ahash_update shared descriptor */
312 desc = ctx->sh_desc_update; 312 desc = ctx->sh_desc_update;
313 313
314 init_sh_desc(desc, HDR_SHARE_WAIT); 314 init_sh_desc(desc, HDR_SHARE_SERIAL);
315 315
316 /* Import context from software */ 316 /* Import context from software */
317 append_cmd(desc, CMD_SEQ_LOAD | LDST_SRCDST_BYTE_CONTEXT | 317 append_cmd(desc, CMD_SEQ_LOAD | LDST_SRCDST_BYTE_CONTEXT |
diff --git a/drivers/crypto/caam/caamrng.c b/drivers/crypto/caam/caamrng.c
index ccedb54317e1..d1939a9539c0 100644
--- a/drivers/crypto/caam/caamrng.c
+++ b/drivers/crypto/caam/caamrng.c
@@ -193,7 +193,7 @@ static inline void rng_create_sh_desc(struct caam_rng_ctx *ctx)
193 struct device *jrdev = ctx->jrdev; 193 struct device *jrdev = ctx->jrdev;
194 u32 *desc = ctx->sh_desc; 194 u32 *desc = ctx->sh_desc;
195 195
196 init_sh_desc(desc, HDR_SHARE_WAIT); 196 init_sh_desc(desc, HDR_SHARE_SERIAL);
197 197
198 /* Propagate errors from shared to job descriptor */ 198 /* Propagate errors from shared to job descriptor */
199 append_cmd(desc, SET_OK_NO_PROP_ERRORS | CMD_LOAD); 199 append_cmd(desc, SET_OK_NO_PROP_ERRORS | CMD_LOAD);