aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/mediatek/mtk-aes.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/crypto/mediatek/mtk-aes.c')
-rw-r--r--drivers/crypto/mediatek/mtk-aes.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/crypto/mediatek/mtk-aes.c b/drivers/crypto/mediatek/mtk-aes.c
index b57b68f2ac93..21f3e594804b 100644
--- a/drivers/crypto/mediatek/mtk-aes.c
+++ b/drivers/crypto/mediatek/mtk-aes.c
@@ -262,7 +262,7 @@ static int mtk_aes_xmit(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
262 262
263 /* Write command descriptors */ 263 /* Write command descriptors */
264 for (nents = 0; nents < slen; ++nents, ssg = sg_next(ssg)) { 264 for (nents = 0; nents < slen; ++nents, ssg = sg_next(ssg)) {
265 cmd = ring->cmd_base + ring->cmd_pos; 265 cmd = ring->cmd_next;
266 cmd->hdr = MTK_DESC_BUF_LEN(ssg->length); 266 cmd->hdr = MTK_DESC_BUF_LEN(ssg->length);
267 cmd->buf = cpu_to_le32(sg_dma_address(ssg)); 267 cmd->buf = cpu_to_le32(sg_dma_address(ssg));
268 268
@@ -274,22 +274,24 @@ static int mtk_aes_xmit(struct mtk_cryp *cryp, struct mtk_aes_rec *aes)
274 cmd->tfm = cpu_to_le32(aes->ctx->tfm_dma); 274 cmd->tfm = cpu_to_le32(aes->ctx->tfm_dma);
275 } 275 }
276 276
277 if (++ring->cmd_pos == MTK_DESC_NUM) 277 /* Shift ring buffer and check boundary */
278 ring->cmd_pos = 0; 278 if (++ring->cmd_next == ring->cmd_base + MTK_DESC_NUM)
279 ring->cmd_next = ring->cmd_base;
279 } 280 }
280 cmd->hdr |= MTK_DESC_LAST; 281 cmd->hdr |= MTK_DESC_LAST;
281 282
282 /* Prepare result descriptors */ 283 /* Prepare result descriptors */
283 for (nents = 0; nents < dlen; ++nents, dsg = sg_next(dsg)) { 284 for (nents = 0; nents < dlen; ++nents, dsg = sg_next(dsg)) {
284 res = ring->res_base + ring->res_pos; 285 res = ring->res_next;
285 res->hdr = MTK_DESC_BUF_LEN(dsg->length); 286 res->hdr = MTK_DESC_BUF_LEN(dsg->length);
286 res->buf = cpu_to_le32(sg_dma_address(dsg)); 287 res->buf = cpu_to_le32(sg_dma_address(dsg));
287 288
288 if (nents == 0) 289 if (nents == 0)
289 res->hdr |= MTK_DESC_FIRST; 290 res->hdr |= MTK_DESC_FIRST;
290 291
291 if (++ring->res_pos == MTK_DESC_NUM) 292 /* Shift ring buffer and check boundary */
292 ring->res_pos = 0; 293 if (++ring->res_next == ring->res_base + MTK_DESC_NUM)
294 ring->res_next = ring->res_base;
293 } 295 }
294 res->hdr |= MTK_DESC_LAST; 296 res->hdr |= MTK_DESC_LAST;
295 297