diff options
author | Tudor Ambarus <tudor.ambarus@freescale.com> | 2014-03-20 15:12:57 (GMT) |
---|---|---|
committer | Jose Rivera <German.Rivera@freescale.com> | 2014-03-28 13:40:02 (GMT) |
commit | e713b9a7fe4e7716e7424009deb505cc076845c5 (patch) | |
tree | e5c24a306a62245232ec98fac5aacb8e94c01c85 | |
parent | ffa718c8660ab30a92f1dcf59bc7bf17c4d050cf (diff) | |
download | linux-fsl-qoriq-e713b9a7fe4e7716e7424009deb505cc076845c5.tar.xz |
crypto: caam - fix tls1.0 encrypt for large packets
The descriptor tries to push more data into the IFIFO
than its size (128 bytes) or existing free space and the DECO hangs.
Drain the IFIFO before loading data into it.
Signed-off-by: Tudor Ambarus <tudor.ambarus@freescale.com>
Change-Id: Ie59760908b821f9c64273d83f4a8cf00e45e08df
Reviewed-on: http://git.am.freescale.net:8181/9991
Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com>
Reviewed-by: Cristian Stoica <cristian.stoica@freescale.com>
Reviewed-by: Horia Ioan Geanta Neag <horia.geanta@freescale.com>
Reviewed-by: Alexandru Porosanu <alexandru.porosanu@freescale.com>
Reviewed-by: Jose Rivera <German.Rivera@freescale.com>
(cherry picked from commit 215baf1dc9baf5504cec0e176b390499862e4b09)
Reviewed-on: http://git.am.freescale.net:8181/10378
Reviewed-by: Mircea Pop <mircea.pop@freescale.com>
-rw-r--r-- | drivers/crypto/caam/caamalg.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c index 152cfb8..a319c3d 100644 --- a/drivers/crypto/caam/caamalg.c +++ b/drivers/crypto/caam/caamalg.c @@ -526,6 +526,9 @@ static int tls_set_sh_desc(struct crypto_aead *aead) /* cryptlen = payloadlen + icvlen + padlen */ append_math_add(desc, VARSEQOUTLEN, REG1, REG2, 4); + /* store encrypted payload, icv and padding */ + append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | LDST_VLF); + /* if payload length is zero, jump to zero-payload commands */ append_math_add(desc, NONE, ZERO, VARSEQINLEN, 4); zero_payload_jump_cmd = append_jump(desc, JUMP_TEST_ALL | @@ -563,9 +566,6 @@ static int tls_set_sh_desc(struct crypto_aead *aead) LDST_SRCDST_WORD_INFO_FIFO_SZM | LDST_IMM | (2 & LDST_LEN_MASK)); - /* store encrypted payload, icv and padding */ - append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | LDST_VLF); - ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc, desc_bytes(desc), DMA_TO_DEVICE); |