summaryrefslogtreecommitdiff
path: root/drivers/crypto
diff options
context:
space:
mode:
authorPhil Sutter <phil.sutter@viprinet.com>2011-05-05 15:29:05 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2011-05-11 15:06:21 +1000
commit7759995c75ae0cbd4c861582908449f6b6208e7a (patch)
treed31801ebe8907a1795e76c8736d46786b2091833 /drivers/crypto
parent8652348754a1f538daa1eab248e5c9c4c3600204 (diff)
downloadlwn-7759995c75ae0cbd4c861582908449f6b6208e7a.tar.gz
lwn-7759995c75ae0cbd4c861582908449f6b6208e7a.zip
crypto: mv_cesa - copy remaining bytes to SRAM only when needed
Signed-off-by: Phil Sutter <phil.sutter@viprinet.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto')
-rw-r--r--drivers/crypto/mv_cesa.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/crypto/mv_cesa.c b/drivers/crypto/mv_cesa.c
index a2d9e394f80f..d704ed0e7d3d 100644
--- a/drivers/crypto/mv_cesa.c
+++ b/drivers/crypto/mv_cesa.c
@@ -525,12 +525,6 @@ static void mv_start_new_hash_req(struct ahash_request *req)
hw_bytes = req->nbytes + ctx->extra_bytes;
old_extra_bytes = ctx->extra_bytes;
- if (unlikely(ctx->extra_bytes)) {
- memcpy(cpg->sram + SRAM_DATA_IN_START, ctx->buffer,
- ctx->extra_bytes);
- p->crypt_len = ctx->extra_bytes;
- }
-
ctx->extra_bytes = hw_bytes % SHA1_BLOCK_SIZE;
if (ctx->extra_bytes != 0
&& (!ctx->last_chunk || ctx->count > MAX_HW_HASH_SIZE))
@@ -546,6 +540,12 @@ static void mv_start_new_hash_req(struct ahash_request *req)
p->complete = mv_hash_algo_completion;
p->process = mv_process_hash_current;
+ if (unlikely(old_extra_bytes)) {
+ memcpy(cpg->sram + SRAM_DATA_IN_START, ctx->buffer,
+ old_extra_bytes);
+ p->crypt_len = old_extra_bytes;
+ }
+
mv_process_hash_current(1);
} else {
copy_src_to_buf(p, ctx->buffer + old_extra_bytes,