OSDN Git Service

crypto: caam - merge identical ahash_final/finup shared desc
authorHoria Geantă <horia.geanta@nxp.com>
Wed, 9 Nov 2016 08:46:24 +0000 (10:46 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sun, 13 Nov 2016 09:45:16 +0000 (17:45 +0800)
Shared descriptors used by ahash_final() and ahash_finup()
are identical, thus get rid of one of them (sh_desc_finup).

Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/caam/caamhash.c

index d5a06c6..86f3608 100644 (file)
@@ -103,12 +103,10 @@ struct caam_hash_ctx {
        u32 sh_desc_update_first[DESC_HASH_MAX_USED_LEN] ____cacheline_aligned;
        u32 sh_desc_fin[DESC_HASH_MAX_USED_LEN] ____cacheline_aligned;
        u32 sh_desc_digest[DESC_HASH_MAX_USED_LEN] ____cacheline_aligned;
-       u32 sh_desc_finup[DESC_HASH_MAX_USED_LEN] ____cacheline_aligned;
        dma_addr_t sh_desc_update_dma ____cacheline_aligned;
        dma_addr_t sh_desc_update_first_dma;
        dma_addr_t sh_desc_fin_dma;
        dma_addr_t sh_desc_digest_dma;
-       dma_addr_t sh_desc_finup_dma;
        struct device *jrdev;
        u32 alg_type;
        u32 alg_op;
@@ -380,24 +378,6 @@ static int ahash_set_sh_desc(struct crypto_ahash *ahash)
                       desc_bytes(desc), 1);
 #endif
 
-       /* ahash_finup shared descriptor */
-       desc = ctx->sh_desc_finup;
-
-       ahash_ctx_data_to_out(desc, have_key | ctx->alg_type,
-                             OP_ALG_AS_FINALIZE, digestsize, ctx);
-
-       ctx->sh_desc_finup_dma = dma_map_single(jrdev, desc, desc_bytes(desc),
-                                               DMA_TO_DEVICE);
-       if (dma_mapping_error(jrdev, ctx->sh_desc_finup_dma)) {
-               dev_err(jrdev, "unable to map shared descriptor\n");
-               return -ENOMEM;
-       }
-#ifdef DEBUG
-       print_hex_dump(KERN_ERR, "ahash finup shdesc@"__stringify(__LINE__)": ",
-                      DUMP_PREFIX_ADDRESS, 16, 4, desc,
-                      desc_bytes(desc), 1);
-#endif
-
        /* ahash_digest shared descriptor */
        desc = ctx->sh_desc_digest;
 
@@ -1071,7 +1051,7 @@ static int ahash_finup_ctx(struct ahash_request *req)
 
        /* allocate space for base edesc and hw desc commands, link tables */
        edesc = ahash_edesc_alloc(ctx, sec4_sg_src_index + mapped_nents,
-                                 ctx->sh_desc_finup, ctx->sh_desc_finup_dma,
+                                 ctx->sh_desc_fin, ctx->sh_desc_fin_dma,
                                  flags);
        if (!edesc) {
                dma_unmap_sg(jrdev, req->src, src_nents, DMA_TO_DEVICE);
@@ -1886,10 +1866,6 @@ static void caam_hash_cra_exit(struct crypto_tfm *tfm)
                dma_unmap_single(ctx->jrdev, ctx->sh_desc_digest_dma,
                                 desc_bytes(ctx->sh_desc_digest),
                                 DMA_TO_DEVICE);
-       if (ctx->sh_desc_finup_dma &&
-           !dma_mapping_error(ctx->jrdev, ctx->sh_desc_finup_dma))
-               dma_unmap_single(ctx->jrdev, ctx->sh_desc_finup_dma,
-                                desc_bytes(ctx->sh_desc_finup), DMA_TO_DEVICE);
 
        caam_jr_free(ctx->jrdev);
 }