diff options
author | Uri Simchoni <uri@jdland.co.il> | 2010-04-08 12:33:26 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2010-04-13 04:50:48 -0400 |
commit | 0c5c6c4bae8fe9ae3d86b44c332eb1267df1ec99 (patch) | |
tree | 25dd8045449682dcb0c241d957ce8410f9e787f0 /drivers/crypto | |
parent | f0d03deaad05d9cc99cd2ee0475c9ecd726c19ae (diff) |
crypto: mv_cesa - Support processing of data from previous requests
Support processing of data from previous requests (as in hashing
update/final requests).
Signed-off-by: Uri Simchoni <uri@jdland.co.il>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto')
-rw-r--r-- | drivers/crypto/mv_cesa.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/crypto/mv_cesa.c b/drivers/crypto/mv_cesa.c index 49a22060fb51..d0fb10e701c5 100644 --- a/drivers/crypto/mv_cesa.c +++ b/drivers/crypto/mv_cesa.c | |||
@@ -184,10 +184,11 @@ static void copy_src_to_buf(struct req_progress *p, char *dbuf, int len) | |||
184 | static void setup_data_in(void) | 184 | static void setup_data_in(void) |
185 | { | 185 | { |
186 | struct req_progress *p = &cpg->p; | 186 | struct req_progress *p = &cpg->p; |
187 | p->crypt_len = | 187 | int data_in_sram = |
188 | min(p->hw_nbytes - p->hw_processed_bytes, cpg->max_req_size); | 188 | min(p->hw_nbytes - p->hw_processed_bytes, cpg->max_req_size); |
189 | copy_src_to_buf(p, cpg->sram + SRAM_DATA_IN_START, | 189 | copy_src_to_buf(p, cpg->sram + SRAM_DATA_IN_START + p->crypt_len, |
190 | p->crypt_len); | 190 | data_in_sram - p->crypt_len); |
191 | p->crypt_len = data_in_sram; | ||
191 | } | 192 | } |
192 | 193 | ||
193 | static void mv_process_current_q(int first_block) | 194 | static void mv_process_current_q(int first_block) |
@@ -298,6 +299,7 @@ static void dequeue_complete_req(void) | |||
298 | } while (need_copy_len > 0); | 299 | } while (need_copy_len > 0); |
299 | } | 300 | } |
300 | 301 | ||
302 | cpg->p.crypt_len = 0; | ||
301 | 303 | ||
302 | BUG_ON(cpg->eng_st != ENGINE_W_DEQUEUE); | 304 | BUG_ON(cpg->eng_st != ENGINE_W_DEQUEUE); |
303 | if (cpg->p.hw_processed_bytes < cpg->p.hw_nbytes) { | 305 | if (cpg->p.hw_processed_bytes < cpg->p.hw_nbytes) { |