Lines Matching refs:rctx
201 int check_valid_request(struct eip93_cipher_reqctx *rctx) in check_valid_request() argument
203 struct scatterlist *src = rctx->sg_src; in check_valid_request()
204 struct scatterlist *dst = rctx->sg_dst; in check_valid_request()
205 u32 textsize = rctx->textsize; in check_valid_request()
206 u32 authsize = rctx->authsize; in check_valid_request()
207 u32 blksize = rctx->blksize; in check_valid_request()
208 u32 totlen_src = rctx->assoclen + rctx->textsize; in check_valid_request()
209 u32 totlen_dst = rctx->assoclen + rctx->textsize; in check_valid_request()
215 if (!IS_CTR(rctx->flags)) { in check_valid_request()
221 if (IS_ENCRYPT(rctx->flags)) in check_valid_request()
270 err = eip93_make_sg_copy(src, &rctx->sg_src, copy_len, true); in check_valid_request()
276 err = eip93_make_sg_copy(dst, &rctx->sg_dst, copy_len, false); in check_valid_request()
281 src_nents = sg_nents_for_len(rctx->sg_src, totlen_src); in check_valid_request()
285 dst_nents = sg_nents_for_len(rctx->sg_dst, totlen_dst); in check_valid_request()
289 rctx->src_nents = src_nents; in check_valid_request()
290 rctx->dst_nents = dst_nents; in check_valid_request()
381 struct eip93_cipher_reqctx *rctx, in eip93_scatter_combine() argument
384 struct eip93_descriptor *cdesc = rctx->cdesc; in eip93_scatter_combine()
385 struct scatterlist *sgsrc = rctx->sg_src; in eip93_scatter_combine()
386 struct scatterlist *sgdst = rctx->sg_dst; in eip93_scatter_combine()
398 if (IS_ECB(rctx->flags)) in eip93_scatter_combine()
399 rctx->sa_state_base = 0; in eip93_scatter_combine()
402 state_addr = rctx->sa_state_ctr_base; in eip93_scatter_combine()
405 state_addr = rctx->sa_state_base; in eip93_scatter_combine()
485 state_addr = rctx->sa_state_base; in eip93_scatter_combine()
512 const u8 *reqiv, struct eip93_cipher_reqctx *rctx) in eip93_send_req() argument
516 struct scatterlist *src = rctx->sg_src; in eip93_send_req()
517 struct scatterlist *dst = rctx->sg_dst; in eip93_send_req()
520 u32 flags = rctx->flags; in eip93_send_req()
522 u32 datalen = rctx->assoclen + rctx->textsize; in eip93_send_req()
528 rctx->sa_state_ctr = NULL; in eip93_send_req()
529 rctx->sa_state = NULL; in eip93_send_req()
534 memcpy(iv, reqiv, rctx->ivsize); in eip93_send_req()
536 rctx->sa_state = kzalloc(sizeof(*rctx->sa_state), GFP_KERNEL); in eip93_send_req()
537 if (!rctx->sa_state) in eip93_send_req()
540 sa_state = rctx->sa_state; in eip93_send_req()
542 memcpy(sa_state->state_iv, iv, rctx->ivsize); in eip93_send_req()
550 blocks = DIV_ROUND_UP(rctx->textsize, AES_BLOCK_SIZE); in eip93_send_req()
564 rctx->sa_state_ctr = kzalloc(sizeof(*rctx->sa_state_ctr), in eip93_send_req()
566 if (!rctx->sa_state_ctr) { in eip93_send_req()
571 memcpy(rctx->sa_state_ctr->state_iv, reqiv, rctx->ivsize); in eip93_send_req()
572 memcpy(sa_state->state_iv, iv, rctx->ivsize); in eip93_send_req()
574 rctx->sa_state_ctr_base = dma_map_single(eip93->dev, rctx->sa_state_ctr, in eip93_send_req()
575 sizeof(*rctx->sa_state_ctr), in eip93_send_req()
577 err = dma_mapping_error(eip93->dev, rctx->sa_state_ctr_base); in eip93_send_req()
583 rctx->sa_state_base = dma_map_single(eip93->dev, rctx->sa_state, in eip93_send_req()
584 sizeof(*rctx->sa_state), DMA_TO_DEVICE); in eip93_send_req()
585 err = dma_mapping_error(eip93->dev, rctx->sa_state_base); in eip93_send_req()
593 cdesc.sa_addr = rctx->sa_record_base; in eip93_send_req()
601 FIELD_PREP(EIP93_PE_USER_ID_DESC_FLAGS, rctx->desc_flags); in eip93_send_req()
603 rctx->cdesc = &cdesc; in eip93_send_req()
608 if (!dma_map_sg(eip93->dev, dst, rctx->dst_nents, DMA_BIDIRECTIONAL)) { in eip93_send_req()
614 !dma_map_sg(eip93->dev, src, rctx->src_nents, DMA_TO_DEVICE)) { in eip93_send_req()
619 return eip93_scatter_combine(eip93, rctx, datalen, split, offsetin); in eip93_send_req()
622 dma_unmap_sg(eip93->dev, dst, rctx->dst_nents, DMA_BIDIRECTIONAL); in eip93_send_req()
624 if (rctx->sa_state_ctr) in eip93_send_req()
625 dma_unmap_single(eip93->dev, rctx->sa_state_ctr_base, in eip93_send_req()
626 sizeof(*rctx->sa_state_ctr), in eip93_send_req()
629 kfree(rctx->sa_state_ctr); in eip93_send_req()
630 if (rctx->sa_state) in eip93_send_req()
631 dma_unmap_single(eip93->dev, rctx->sa_state_base, in eip93_send_req()
632 sizeof(*rctx->sa_state), in eip93_send_req()
635 kfree(rctx->sa_state); in eip93_send_req()
640 void eip93_unmap_dma(struct eip93_device *eip93, struct eip93_cipher_reqctx *rctx, in eip93_unmap_dma() argument
643 u32 len = rctx->assoclen + rctx->textsize; in eip93_unmap_dma()
644 u32 authsize = rctx->authsize; in eip93_unmap_dma()
645 u32 flags = rctx->flags; in eip93_unmap_dma()
649 if (rctx->sg_src == rctx->sg_dst) { in eip93_unmap_dma()
650 dma_unmap_sg(eip93->dev, rctx->sg_dst, rctx->dst_nents, in eip93_unmap_dma()
655 dma_unmap_sg(eip93->dev, rctx->sg_src, rctx->src_nents, in eip93_unmap_dma()
658 if (rctx->sg_src != reqsrc) in eip93_unmap_dma()
659 eip93_free_sg_copy(len + rctx->authsize, &rctx->sg_src); in eip93_unmap_dma()
661 dma_unmap_sg(eip93->dev, rctx->sg_dst, rctx->dst_nents, in eip93_unmap_dma()
671 otag = sg_virt(rctx->sg_dst) + len; in eip93_unmap_dma()
677 if (rctx->sg_dst != reqdst) { in eip93_unmap_dma()
679 sg_virt(rctx->sg_dst), len + authsize); in eip93_unmap_dma()
680 eip93_free_sg_copy(len + rctx->authsize, &rctx->sg_dst); in eip93_unmap_dma()
684 void eip93_handle_result(struct eip93_device *eip93, struct eip93_cipher_reqctx *rctx, in eip93_handle_result() argument
687 if (rctx->sa_state_ctr) in eip93_handle_result()
688 dma_unmap_single(eip93->dev, rctx->sa_state_ctr_base, in eip93_handle_result()
689 sizeof(*rctx->sa_state_ctr), in eip93_handle_result()
692 if (rctx->sa_state) in eip93_handle_result()
693 dma_unmap_single(eip93->dev, rctx->sa_state_base, in eip93_handle_result()
694 sizeof(*rctx->sa_state), in eip93_handle_result()
697 if (!IS_ECB(rctx->flags)) in eip93_handle_result()
698 memcpy(reqiv, rctx->sa_state->state_iv, rctx->ivsize); in eip93_handle_result()
700 kfree(rctx->sa_state_ctr); in eip93_handle_result()
701 kfree(rctx->sa_state); in eip93_handle_result()
710 struct eip93_hash_reqctx *rctx; in eip93_hmac_setkey() local
744 rctx = ahash_request_ctx_dma(req); in eip93_hmac_setkey()
784 rctx->partial_hash = true; in eip93_hmac_setkey()
799 rctx->partial_hash = true; in eip93_hmac_setkey()