Lines Matching refs:rctx

96 static void req_ctx_init(struct mcryptd_hash_request_ctx *rctx,  in req_ctx_init()  argument
99 rctx->flag = HASH_UPDATE; in req_ctx_init()
366 static int sha1_mb_set_results(struct mcryptd_hash_request_ctx *rctx) in sha1_mb_set_results() argument
369 struct sha1_hash_ctx *sctx = shash_desc_ctx(&rctx->desc); in sha1_mb_set_results()
370 __be32 *dst = (__be32 *) rctx->out; in sha1_mb_set_results()
383 struct mcryptd_hash_request_ctx *rctx = *ret_rctx; in sha_finish_walk() local
387 while (!(rctx->flag & HASH_DONE)) { in sha_finish_walk()
388 nbytes = crypto_ahash_walk_done(&rctx->walk, 0); in sha_finish_walk()
394 if (crypto_ahash_walk_last(&rctx->walk)) { in sha_finish_walk()
395 rctx->flag |= HASH_DONE; in sha_finish_walk()
396 if (rctx->flag & HASH_FINAL) in sha_finish_walk()
400 sha_ctx = (struct sha1_hash_ctx *) shash_desc_ctx(&rctx->desc); in sha_finish_walk()
402 sha_ctx = sha1_ctx_mgr_submit(cstate->mgr, sha_ctx, rctx->walk.data, nbytes, flag); in sha_finish_walk()
409 rctx = cast_hash_to_mcryptd_ctx(sha_ctx); in sha_finish_walk()
411 rctx = NULL; in sha_finish_walk()
417 if (rctx->flag & HASH_FINAL) in sha_finish_walk()
418 sha1_mb_set_results(rctx); in sha_finish_walk()
421 *ret_rctx = rctx; in sha_finish_walk()
425 static int sha_complete_job(struct mcryptd_hash_request_ctx *rctx, in sha_complete_job() argument
429 struct ahash_request *req = cast_mcryptd_ctx_to_req(rctx); in sha_complete_job()
436 list_del(&rctx->waiter); in sha_complete_job()
440 rctx->complete(&req->base, err); in sha_complete_job()
443 rctx->complete(&req->base, err); in sha_complete_job()
472 static void sha1_mb_add_list(struct mcryptd_hash_request_ctx *rctx, in sha1_mb_add_list() argument
479 rctx->tag.arrival = jiffies; /* tag the arrival time */ in sha1_mb_add_list()
480 rctx->tag.seq_num = cstate->next_seq_num++; in sha1_mb_add_list()
481 next_flush = rctx->tag.arrival + delay; in sha1_mb_add_list()
482 rctx->tag.expire = next_flush; in sha1_mb_add_list()
485 list_add_tail(&rctx->waiter, &cstate->work_list); in sha1_mb_add_list()
494 struct mcryptd_hash_request_ctx *rctx = in sha1_mb_update() local
499 struct ahash_request *req = cast_mcryptd_ctx_to_req(rctx); in sha1_mb_update()
505 if (rctx->tag.cpu != smp_processor_id()) { in sha1_mb_update()
511 req_ctx_init(rctx, desc); in sha1_mb_update()
513 nbytes = crypto_ahash_walk_first(req, &rctx->walk); in sha1_mb_update()
520 if (crypto_ahash_walk_last(&rctx->walk)) in sha1_mb_update()
521 rctx->flag |= HASH_DONE; in sha1_mb_update()
525 sha1_mb_add_list(rctx, cstate); in sha1_mb_update()
527 sha_ctx = sha1_ctx_mgr_submit(cstate->mgr, sha_ctx, rctx->walk.data, nbytes, HASH_UPDATE); in sha1_mb_update()
536 rctx = cast_hash_to_mcryptd_ctx(sha_ctx); in sha1_mb_update()
540 rctx = cast_hash_to_mcryptd_ctx(sha_ctx); in sha1_mb_update()
541 ret = sha_finish_walk(&rctx, cstate, false); in sha1_mb_update()
543 if (!rctx) in sha1_mb_update()
546 sha_complete_job(rctx, cstate, ret); in sha1_mb_update()
553 struct mcryptd_hash_request_ctx *rctx = in sha1_mb_finup() local
558 struct ahash_request *req = cast_mcryptd_ctx_to_req(rctx); in sha1_mb_finup()
563 if (rctx->tag.cpu != smp_processor_id()) { in sha1_mb_finup()
569 req_ctx_init(rctx, desc); in sha1_mb_finup()
571 nbytes = crypto_ahash_walk_first(req, &rctx->walk); in sha1_mb_finup()
578 if (crypto_ahash_walk_last(&rctx->walk)) { in sha1_mb_finup()
579 rctx->flag |= HASH_DONE; in sha1_mb_finup()
582 rctx->out = out; in sha1_mb_finup()
585 rctx->flag |= HASH_FINAL; in sha1_mb_finup()
587 sha1_mb_add_list(rctx, cstate); in sha1_mb_finup()
590 sha_ctx = sha1_ctx_mgr_submit(cstate->mgr, sha_ctx, rctx->walk.data, nbytes, flag); in sha1_mb_finup()
602 rctx = cast_hash_to_mcryptd_ctx(sha_ctx); in sha1_mb_finup()
603 ret = sha_finish_walk(&rctx, cstate, false); in sha1_mb_finup()
604 if (!rctx) in sha1_mb_finup()
607 sha_complete_job(rctx, cstate, ret); in sha1_mb_finup()
613 struct mcryptd_hash_request_ctx *rctx = in sha1_mb_final() local
623 if (rctx->tag.cpu != smp_processor_id()) { in sha1_mb_final()
629 req_ctx_init(rctx, desc); in sha1_mb_final()
631 rctx->out = out; in sha1_mb_final()
632 rctx->flag |= HASH_DONE | HASH_FINAL; in sha1_mb_final()
636 sha1_mb_add_list(rctx, cstate); in sha1_mb_final()
647 rctx = cast_hash_to_mcryptd_ctx(sha_ctx); in sha1_mb_final()
651 rctx = cast_hash_to_mcryptd_ctx(sha_ctx); in sha1_mb_final()
652 ret = sha_finish_walk(&rctx, cstate, false); in sha1_mb_final()
653 if (!rctx) in sha1_mb_final()
656 sha_complete_job(rctx, cstate, ret); in sha1_mb_final()
823 struct mcryptd_hash_request_ctx *rctx; in sha1_mb_flusher() local
832 rctx = list_entry(cstate->work_list.next, in sha1_mb_flusher()
834 if (time_before(cur_time, rctx->tag.expire)) in sha1_mb_flusher()
843 rctx = cast_hash_to_mcryptd_ctx(sha_ctx); in sha1_mb_flusher()
844 sha_finish_walk(&rctx, cstate, true); in sha1_mb_flusher()
845 sha_complete_job(rctx, cstate, 0); in sha1_mb_flusher()
849 rctx = list_entry(cstate->work_list.next, in sha1_mb_flusher()
852 next_flush = rctx->tag.expire; in sha1_mb_flusher()