Lines Matching refs:req
27 struct ahash_request *req)
29 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
30 unsigned int len = req->nbytes + creq->cache_ptr;
36 mv_cesa_sg_dma_iter_init(&iter->src, req->src, DMA_TO_DEVICE);
49 mv_cesa_ahash_dma_alloc_cache(struct mv_cesa_ahash_dma_req *req, gfp_t flags)
51 req->cache = dma_pool_alloc(cesa_dev->dma->cache_pool, flags,
52 &req->cache_dma);
53 if (!req->cache)
60 mv_cesa_ahash_dma_free_cache(struct mv_cesa_ahash_dma_req *req)
62 if (!req->cache)
65 dma_pool_free(cesa_dev->dma->cache_pool, req->cache,
66 req->cache_dma);
69 static int mv_cesa_ahash_dma_alloc_padding(struct mv_cesa_ahash_dma_req *req,
72 if (req->padding)
75 req->padding = dma_pool_alloc(cesa_dev->dma->padding_pool, flags,
76 &req->padding_dma);
77 if (!req->padding)
83 static void mv_cesa_ahash_dma_free_padding(struct mv_cesa_ahash_dma_req *req)
85 if (!req->padding)
88 dma_pool_free(cesa_dev->dma->padding_pool, req->padding,
89 req->padding_dma);
90 req->padding = NULL;
93 static inline void mv_cesa_ahash_dma_last_cleanup(struct ahash_request *req)
95 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
97 mv_cesa_ahash_dma_free_padding(&creq->req.dma);
100 static inline void mv_cesa_ahash_dma_cleanup(struct ahash_request *req)
102 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
104 dma_unmap_sg(cesa_dev->dev, req->src, creq->src_nents, DMA_TO_DEVICE);
105 mv_cesa_ahash_dma_free_cache(&creq->req.dma);
109 static inline void mv_cesa_ahash_cleanup(struct ahash_request *req)
111 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
114 mv_cesa_ahash_dma_cleanup(req);
117 static void mv_cesa_ahash_last_cleanup(struct ahash_request *req)
119 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
122 mv_cesa_ahash_dma_last_cleanup(req);
157 static void mv_cesa_ahash_std_step(struct ahash_request *req)
159 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
160 struct mv_cesa_ahash_std_req *sreq = &creq->req.std;
173 digsize = crypto_ahash_digestsize(crypto_ahash_reqtfm(req));
183 len = min_t(size_t, req->nbytes + creq->cache_ptr - sreq->offset,
192 sreq->offset += sg_pcopy_to_buffer(req->src, creq->src_nents,
203 if (creq->last_req && sreq->offset == req->nbytes &&
260 static int mv_cesa_ahash_std_process(struct ahash_request *req, u32 status)
262 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
263 struct mv_cesa_ahash_std_req *sreq = &creq->req.std;
265 if (sreq->offset < (req->nbytes - creq->cache_ptr))
271 static inline void mv_cesa_ahash_dma_prepare(struct ahash_request *req)
273 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
279 static void mv_cesa_ahash_std_prepare(struct ahash_request *req)
281 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
282 struct mv_cesa_ahash_std_req *sreq = &creq->req.std;
287 static void mv_cesa_ahash_dma_step(struct ahash_request *req)
289 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
306 static void mv_cesa_ahash_step(struct crypto_async_request *req)
308 struct ahash_request *ahashreq = ahash_request_cast(req);
317 static int mv_cesa_ahash_process(struct crypto_async_request *req, u32 status)
319 struct ahash_request *ahashreq = ahash_request_cast(req);
328 static void mv_cesa_ahash_complete(struct crypto_async_request *req)
330 struct ahash_request *ahashreq = ahash_request_cast(req);
378 static void mv_cesa_ahash_prepare(struct crypto_async_request *req,
381 struct ahash_request *ahashreq = ahash_request_cast(req);
392 static void mv_cesa_ahash_req_cleanup(struct crypto_async_request *req)
394 struct ahash_request *ahashreq = ahash_request_cast(req);
416 static void mv_cesa_ahash_init(struct ahash_request *req,
419 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
445 static bool mv_cesa_ahash_cache_req(struct ahash_request *req)
447 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
450 if (creq->cache_ptr + req->nbytes < CESA_MAX_HASH_BLOCK_SIZE &&
454 if (!req->nbytes)
457 sg_pcopy_to_buffer(req->src, creq->src_nents,
459 req->nbytes, 0);
461 creq->cache_ptr += req->nbytes;
500 struct mv_cesa_ahash_dma_req *ahashdreq = &creq->req.dma;
526 struct mv_cesa_ahash_dma_req *ahashdreq = &creq->req.dma;
603 static int mv_cesa_ahash_dma_req_init(struct ahash_request *req)
605 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
606 gfp_t flags = (req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP) ?
623 ret = dma_map_sg(cesa_dev->dev, req->src, creq->src_nents,
632 mv_cesa_ahash_req_iter_init(&iter, req);
706 creq->cache_ptr = req->nbytes + creq->cache_ptr -
729 dma_unmap_sg(cesa_dev->dev, req->src, creq->src_nents, DMA_TO_DEVICE);
732 mv_cesa_ahash_last_cleanup(req);
737 static int mv_cesa_ahash_req_init(struct ahash_request *req, bool *cached)
739 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
741 creq->src_nents = sg_nents_for_len(req->src, req->nbytes);
747 *cached = mv_cesa_ahash_cache_req(req);
753 return mv_cesa_ahash_dma_req_init(req);
758 static int mv_cesa_ahash_queue_req(struct ahash_request *req)
760 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
765 ret = mv_cesa_ahash_req_init(req, &cached);
772 engine = mv_cesa_select_engine(req->nbytes);
773 mv_cesa_ahash_prepare(&req->base, engine);
775 ret = mv_cesa_queue_req(&req->base, &creq->base);
777 if (mv_cesa_req_needs_cleanup(&req->base, ret))
778 mv_cesa_ahash_cleanup(req);
783 static int mv_cesa_ahash_update(struct ahash_request *req)
785 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
787 creq->len += req->nbytes;
789 return mv_cesa_ahash_queue_req(req);
792 static int mv_cesa_ahash_final(struct ahash_request *req)
794 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
799 req->nbytes = 0;
801 return mv_cesa_ahash_queue_req(req);
804 static int mv_cesa_ahash_finup(struct ahash_request *req)
806 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
809 creq->len += req->nbytes;
813 return mv_cesa_ahash_queue_req(req);
816 static int mv_cesa_ahash_export(struct ahash_request *req, void *hash,
819 struct crypto_ahash *ahash = crypto_ahash_reqtfm(req);
820 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
834 static int mv_cesa_ahash_import(struct ahash_request *req, const void *hash,
837 struct crypto_ahash *ahash = crypto_ahash_reqtfm(req);
838 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
844 ret = crypto_ahash_init(req);
868 static int mv_cesa_md5_init(struct ahash_request *req)
870 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
875 mv_cesa_ahash_init(req, &tmpl, true);
885 static int mv_cesa_md5_export(struct ahash_request *req, void *out)
889 return mv_cesa_ahash_export(req, out_state->hash,
893 static int mv_cesa_md5_import(struct ahash_request *req, const void *in)
897 return mv_cesa_ahash_import(req, in_state->hash, in_state->byte_count,
901 static int mv_cesa_md5_digest(struct ahash_request *req)
905 ret = mv_cesa_md5_init(req);
909 return mv_cesa_ahash_finup(req);
938 static int mv_cesa_sha1_init(struct ahash_request *req)
940 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
945 mv_cesa_ahash_init(req, &tmpl, false);
956 static int mv_cesa_sha1_export(struct ahash_request *req, void *out)
960 return mv_cesa_ahash_export(req, out_state->state, &out_state->count,
964 static int mv_cesa_sha1_import(struct ahash_request *req, const void *in)
968 return mv_cesa_ahash_import(req, in_state->state, in_state->count,
972 static int mv_cesa_sha1_digest(struct ahash_request *req)
976 ret = mv_cesa_sha1_init(req);
980 return mv_cesa_ahash_finup(req);
1009 static int mv_cesa_sha256_init(struct ahash_request *req)
1011 struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
1016 mv_cesa_ahash_init(req, &tmpl, false);
1030 static int mv_cesa_sha256_digest(struct ahash_request *req)
1034 ret = mv_cesa_sha256_init(req);
1038 return mv_cesa_ahash_finup(req);
1041 static int mv_cesa_sha256_export(struct ahash_request *req, void *out)
1045 return mv_cesa_ahash_export(req, out_state->state, &out_state->count,
1049 static int mv_cesa_sha256_import(struct ahash_request *req, const void *in)
1053 return mv_cesa_ahash_import(req, in_state->state, in_state->count,
1088 static void mv_cesa_hmac_ahash_complete(struct crypto_async_request *req,
1091 struct mv_cesa_ahash_result *result = req->data;
1100 static int mv_cesa_ahmac_iv_state_init(struct ahash_request *req, u8 *pad,
1107 ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,
1110 ahash_request_set_crypt(req, &sg, pad, blocksize);
1113 ret = crypto_ahash_init(req);
1117 ret = crypto_ahash_update(req);
1125 ret = crypto_ahash_export(req, state);
1132 static int mv_cesa_ahmac_pad_init(struct ahash_request *req,
1150 ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,
1154 ahash_request_set_crypt(req, &sg, ipad, keylen);
1157 ret = crypto_ahash_digest(req);
1169 keylen = crypto_ahash_digestsize(crypto_ahash_reqtfm(req));
1187 struct ahash_request *req;
1198 req = ahash_request_alloc(tfm, GFP_KERNEL);
1199 if (!req) {
1216 ret = mv_cesa_ahmac_pad_init(req, key, keylen, ipad, opad, blocksize);
1220 ret = mv_cesa_ahmac_iv_state_init(req, ipad, istate, blocksize);
1224 ret = mv_cesa_ahmac_iv_state_init(req, opad, ostate, blocksize);
1229 ahash_request_free(req);
1247 static int mv_cesa_ahmac_md5_init(struct ahash_request *req)
1249 struct mv_cesa_hmac_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
1255 mv_cesa_ahash_init(req, &tmpl, true);
1280 static int mv_cesa_ahmac_md5_digest(struct ahash_request *req)
1284 ret = mv_cesa_ahmac_md5_init(req);
1288 return mv_cesa_ahash_finup(req);
1318 static int mv_cesa_ahmac_sha1_init(struct ahash_request *req)
1320 struct mv_cesa_hmac_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
1326 mv_cesa_ahash_init(req, &tmpl, false);
1351 static int mv_cesa_ahmac_sha1_digest(struct ahash_request *req)
1355 ret = mv_cesa_ahmac_sha1_init(req);
1359 return mv_cesa_ahash_finup(req);
1409 static int mv_cesa_ahmac_sha256_init(struct ahash_request *req)
1411 struct mv_cesa_hmac_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
1417 mv_cesa_ahash_init(req, &tmpl, false);
1422 static int mv_cesa_ahmac_sha256_digest(struct ahash_request *req)
1426 ret = mv_cesa_ahmac_sha256_init(req);
1430 return mv_cesa_ahash_finup(req);