Lines Matching refs:req
28 struct ahash_request *req)
30 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
31 unsigned int len = req->nbytes + creq->cache_ptr;
37 mv_cesa_sg_dma_iter_init(&iter->src, req->src, DMA_TO_DEVICE);
50 mv_cesa_ahash_dma_alloc_cache(struct mv_cesa_ahash_dma_req *req, gfp_t flags)
52 req->cache = dma_pool_alloc(cesa_dev->dma->cache_pool, flags,
53 &req->cache_dma);
54 if (!req->cache)
61 mv_cesa_ahash_dma_free_cache(struct mv_cesa_ahash_dma_req *req)
63 if (!req->cache)
66 dma_pool_free(cesa_dev->dma->cache_pool, req->cache,
67 req->cache_dma);
70 static int mv_cesa_ahash_dma_alloc_padding(struct mv_cesa_ahash_dma_req *req,
73 if (req->padding)
76 req->padding = dma_pool_alloc(cesa_dev->dma->padding_pool, flags,
77 &req->padding_dma);
78 if (!req->padding)
84 static void mv_cesa_ahash_dma_free_padding(struct mv_cesa_ahash_dma_req *req)
86 if (!req->padding)
89 dma_pool_free(cesa_dev->dma->padding_pool, req->padding,
90 req->padding_dma);
91 req->padding = NULL;
94 static inline void mv_cesa_ahash_dma_last_cleanup(struct ahash_request *req)
96 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
98 mv_cesa_ahash_dma_free_padding(&creq->req.dma);
101 static inline void mv_cesa_ahash_dma_cleanup(struct ahash_request *req)
103 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
105 dma_unmap_sg(cesa_dev->dev, req->src, creq->src_nents, DMA_TO_DEVICE);
106 mv_cesa_ahash_dma_free_cache(&creq->req.dma);
110 static inline void mv_cesa_ahash_cleanup(struct ahash_request *req)
112 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
115 mv_cesa_ahash_dma_cleanup(req);
118 static void mv_cesa_ahash_last_cleanup(struct ahash_request *req)
120 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
123 mv_cesa_ahash_dma_last_cleanup(req);
158 static void mv_cesa_ahash_std_step(struct ahash_request *req)
160 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
161 struct mv_cesa_ahash_std_req *sreq = &creq->req.std;
179 digsize = crypto_ahash_digestsize(crypto_ahash_reqtfm(req));
194 len = min_t(size_t, req->nbytes + creq->cache_ptr - sreq->offset,
204 engine, req->src, creq->src_nents,
212 if (creq->last_req && sreq->offset == req->nbytes &&
284 static int mv_cesa_ahash_std_process(struct ahash_request *req, u32 status)
286 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
287 struct mv_cesa_ahash_std_req *sreq = &creq->req.std;
289 if (sreq->offset < (req->nbytes - creq->cache_ptr))
295 static inline void mv_cesa_ahash_dma_prepare(struct ahash_request *req)
297 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
303 static void mv_cesa_ahash_std_prepare(struct ahash_request *req)
305 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
306 struct mv_cesa_ahash_std_req *sreq = &creq->req.std;
311 static void mv_cesa_ahash_dma_step(struct ahash_request *req)
313 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
330 static void mv_cesa_ahash_step(struct crypto_async_request *req)
332 struct ahash_request *ahashreq = ahash_request_cast(req);
341 static int mv_cesa_ahash_process(struct crypto_async_request *req, u32 status)
343 struct ahash_request *ahashreq = ahash_request_cast(req);
352 static void mv_cesa_ahash_complete(struct crypto_async_request *req)
354 struct ahash_request *ahashreq = ahash_request_cast(req);
402 static void mv_cesa_ahash_prepare(struct crypto_async_request *req,
405 struct ahash_request *ahashreq = ahash_request_cast(req);
416 static void mv_cesa_ahash_req_cleanup(struct crypto_async_request *req)
418 struct ahash_request *ahashreq = ahash_request_cast(req);
440 static void mv_cesa_ahash_init(struct ahash_request *req,
443 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
469 static bool mv_cesa_ahash_cache_req(struct ahash_request *req)
471 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
474 if (creq->cache_ptr + req->nbytes < CESA_MAX_HASH_BLOCK_SIZE &&
478 if (!req->nbytes)
481 sg_pcopy_to_buffer(req->src, creq->src_nents,
483 req->nbytes, 0);
485 creq->cache_ptr += req->nbytes;
524 struct mv_cesa_ahash_dma_req *ahashdreq = &creq->req.dma;
550 struct mv_cesa_ahash_dma_req *ahashdreq = &creq->req.dma;
627 static int mv_cesa_ahash_dma_req_init(struct ahash_request *req)
629 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
630 gfp_t flags = (req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP) ?
647 ret = dma_map_sg(cesa_dev->dev, req->src, creq->src_nents,
656 mv_cesa_ahash_req_iter_init(&iter, req);
730 creq->cache_ptr = req->nbytes + creq->cache_ptr -
753 dma_unmap_sg(cesa_dev->dev, req->src, creq->src_nents, DMA_TO_DEVICE);
756 mv_cesa_ahash_last_cleanup(req);
761 static int mv_cesa_ahash_req_init(struct ahash_request *req, bool *cached)
763 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
765 creq->src_nents = sg_nents_for_len(req->src, req->nbytes);
771 *cached = mv_cesa_ahash_cache_req(req);
777 return mv_cesa_ahash_dma_req_init(req);
782 static int mv_cesa_ahash_queue_req(struct ahash_request *req)
784 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
789 ret = mv_cesa_ahash_req_init(req, &cached);
796 engine = mv_cesa_select_engine(req->nbytes);
797 mv_cesa_ahash_prepare(&req->base, engine);
799 ret = mv_cesa_queue_req(&req->base, &creq->base);
801 if (mv_cesa_req_needs_cleanup(&req->base, ret))
802 mv_cesa_ahash_cleanup(req);
807 static int mv_cesa_ahash_update(struct ahash_request *req)
809 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
811 creq->len += req->nbytes;
813 return mv_cesa_ahash_queue_req(req);
816 static int mv_cesa_ahash_final(struct ahash_request *req)
818 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
823 req->nbytes = 0;
825 return mv_cesa_ahash_queue_req(req);
828 static int mv_cesa_ahash_finup(struct ahash_request *req)
830 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
833 creq->len += req->nbytes;
837 return mv_cesa_ahash_queue_req(req);
840 static int mv_cesa_ahash_export(struct ahash_request *req, void *hash,
843 struct crypto_ahash *ahash = crypto_ahash_reqtfm(req);
844 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
858 static int mv_cesa_ahash_import(struct ahash_request *req, const void *hash,
861 struct crypto_ahash *ahash = crypto_ahash_reqtfm(req);
862 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
868 ret = crypto_ahash_init(req);
892 static int mv_cesa_md5_init(struct ahash_request *req)
894 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
899 mv_cesa_ahash_init(req, &tmpl, true);
909 static int mv_cesa_md5_export(struct ahash_request *req, void *out)
913 return mv_cesa_ahash_export(req, out_state->hash,
917 static int mv_cesa_md5_import(struct ahash_request *req, const void *in)
921 return mv_cesa_ahash_import(req, in_state->hash, in_state->byte_count,
925 static int mv_cesa_md5_digest(struct ahash_request *req)
929 ret = mv_cesa_md5_init(req);
933 return mv_cesa_ahash_finup(req);
962 static int mv_cesa_sha1_init(struct ahash_request *req)
964 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
969 mv_cesa_ahash_init(req, &tmpl, false);
980 static int mv_cesa_sha1_export(struct ahash_request *req, void *out)
984 return mv_cesa_ahash_export(req, out_state->state, &out_state->count,
988 static int mv_cesa_sha1_import(struct ahash_request *req, const void *in)
992 return mv_cesa_ahash_import(req, in_state->state, in_state->count,
996 static int mv_cesa_sha1_digest(struct ahash_request *req)
1000 ret = mv_cesa_sha1_init(req);
1004 return mv_cesa_ahash_finup(req);
1033 static int mv_cesa_sha256_init(struct ahash_request *req)
1035 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
1040 mv_cesa_ahash_init(req, &tmpl, false);
1054 static int mv_cesa_sha256_digest(struct ahash_request *req)
1058 ret = mv_cesa_sha256_init(req);
1062 return mv_cesa_ahash_finup(req);
1065 static int mv_cesa_sha256_export(struct ahash_request *req, void *out)
1069 return mv_cesa_ahash_export(req, out_state->state, &out_state->count,
1073 static int mv_cesa_sha256_import(struct ahash_request *req, const void *in)
1077 return mv_cesa_ahash_import(req, in_state->state, in_state->count,
1107 static int mv_cesa_ahmac_iv_state_init(struct ahash_request *req, u8 *pad,
1114 ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,
1117 ahash_request_set_crypt(req, &sg, pad, blocksize);
1119 ret = crypto_ahash_init(req);
1123 ret = crypto_ahash_update(req);
1129 ret = crypto_ahash_export(req, state);
1136 static int mv_cesa_ahmac_pad_init(struct ahash_request *req,
1154 ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,
1157 ahash_request_set_crypt(req, &sg, ipad, keylen);
1159 ret = crypto_ahash_digest(req);
1168 keylen = crypto_ahash_digestsize(crypto_ahash_reqtfm(req));
1186 struct ahash_request *req;
1197 req = ahash_request_alloc(tfm, GFP_KERNEL);
1198 if (!req) {
1215 ret = mv_cesa_ahmac_pad_init(req, key, keylen, ipad, opad, blocksize);
1219 ret = mv_cesa_ahmac_iv_state_init(req, ipad, istate, blocksize);
1223 ret = mv_cesa_ahmac_iv_state_init(req, opad, ostate, blocksize);
1228 ahash_request_free(req);
1246 static int mv_cesa_ahmac_md5_init(struct ahash_request *req)
1248 struct mv_cesa_hmac_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
1254 mv_cesa_ahash_init(req, &tmpl, true);
1279 static int mv_cesa_ahmac_md5_digest(struct ahash_request *req)
1283 ret = mv_cesa_ahmac_md5_init(req);
1287 return mv_cesa_ahash_finup(req);
1317 static int mv_cesa_ahmac_sha1_init(struct ahash_request *req)
1319 struct mv_cesa_hmac_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
1325 mv_cesa_ahash_init(req, &tmpl, false);
1350 static int mv_cesa_ahmac_sha1_digest(struct ahash_request *req)
1354 ret = mv_cesa_ahmac_sha1_init(req);
1358 return mv_cesa_ahash_finup(req);
1408 static int mv_cesa_ahmac_sha256_init(struct ahash_request *req)
1410 struct mv_cesa_hmac_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
1416 mv_cesa_ahash_init(req, &tmpl, false);
1421 static int mv_cesa_ahmac_sha256_digest(struct ahash_request *req)
1425 ret = mv_cesa_ahmac_sha256_init(req);
1429 return mv_cesa_ahash_finup(req);