diff options
author | Phil Sutter <phil.sutter@viprinet.com> | 2011-05-05 15:29:05 +0200 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2011-05-11 07:06:21 +0200 |
commit | 7759995c75ae0cbd4c861582908449f6b6208e7a (patch) | |
tree | d31801ebe8907a1795e76c8736d46786b2091833 /drivers/crypto/mv_cesa.c | |
parent | crypto: mv_cesa - move digest state initialisation to a better place (diff) | |
download | linux-7759995c75ae0cbd4c861582908449f6b6208e7a.tar.xz linux-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/mv_cesa.c')
-rw-r--r-- | drivers/crypto/mv_cesa.c | 12 |
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, |