Lines Matching refs:desc
15 static inline void aead_append_src_dst(u32 *desc, u32 msg_type) in aead_append_src_dst() argument
17 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | KEY_VLF); in aead_append_src_dst()
18 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_BOTH | in aead_append_src_dst()
23 static inline void append_dec_op1(u32 *desc, u32 type) in append_dec_op1() argument
29 append_operation(desc, type | OP_ALG_AS_INITFINAL | in append_dec_op1()
34 jump_cmd = append_jump(desc, JUMP_TEST_ALL | JUMP_COND_SHRD); in append_dec_op1()
35 append_operation(desc, type | OP_ALG_AS_INITFINAL | in append_dec_op1()
37 uncond_jump_cmd = append_jump(desc, JUMP_TEST_ALL); in append_dec_op1()
38 set_jump_tgt_here(desc, jump_cmd); in append_dec_op1()
39 append_operation(desc, type | OP_ALG_AS_INITFINAL | in append_dec_op1()
41 set_jump_tgt_here(desc, uncond_jump_cmd); in append_dec_op1()
56 void cnstr_shdsc_aead_null_encap(u32 * const desc, struct alginfo *adata, in cnstr_shdsc_aead_null_encap() argument
61 init_sh_desc(desc, HDR_SHARE_SERIAL); in cnstr_shdsc_aead_null_encap()
64 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_aead_null_encap()
67 append_key_as_imm(desc, adata->key_virt, adata->keylen_pad, in cnstr_shdsc_aead_null_encap()
71 append_key(desc, adata->key_dma, adata->keylen, CLASS_2 | in cnstr_shdsc_aead_null_encap()
73 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_aead_null_encap()
76 append_math_sub(desc, REG3, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_aead_null_encap()
79 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_aead_null_encap()
80 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_aead_null_encap()
87 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF | in cnstr_shdsc_aead_null_encap()
90 write_move_cmd = append_move(desc, MOVE_SRC_MATH3 | in cnstr_shdsc_aead_null_encap()
96 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_aead_null_encap()
100 aead_append_src_dst(desc, FIFOLD_TYPE_MSG | FIFOLD_TYPE_FLUSH1); in cnstr_shdsc_aead_null_encap()
102 set_move_tgt_here(desc, read_move_cmd); in cnstr_shdsc_aead_null_encap()
103 set_move_tgt_here(desc, write_move_cmd); in cnstr_shdsc_aead_null_encap()
104 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in cnstr_shdsc_aead_null_encap()
105 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO | in cnstr_shdsc_aead_null_encap()
109 append_seq_store(desc, icvsize, LDST_CLASS_2_CCB | in cnstr_shdsc_aead_null_encap()
115 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_aead_null_encap()
132 void cnstr_shdsc_aead_null_decap(u32 * const desc, struct alginfo *adata, in cnstr_shdsc_aead_null_decap() argument
137 init_sh_desc(desc, HDR_SHARE_SERIAL); in cnstr_shdsc_aead_null_decap()
140 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_aead_null_decap()
143 append_key_as_imm(desc, adata->key_virt, adata->keylen_pad, in cnstr_shdsc_aead_null_decap()
147 append_key(desc, adata->key_dma, adata->keylen, CLASS_2 | in cnstr_shdsc_aead_null_decap()
149 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_aead_null_decap()
152 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_aead_null_decap()
156 append_math_sub(desc, REG2, SEQOUTLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_aead_null_decap()
159 append_math_add(desc, VARSEQINLEN, ZERO, REG2, CAAM_CMD_SZ); in cnstr_shdsc_aead_null_decap()
160 append_math_add(desc, VARSEQOUTLEN, ZERO, REG2, CAAM_CMD_SZ); in cnstr_shdsc_aead_null_decap()
167 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF | in cnstr_shdsc_aead_null_decap()
170 write_move_cmd = append_move(desc, MOVE_SRC_MATH2 | in cnstr_shdsc_aead_null_decap()
176 aead_append_src_dst(desc, FIFOLD_TYPE_MSG | FIFOLD_TYPE_FLUSH1); in cnstr_shdsc_aead_null_decap()
182 jump_cmd = append_jump(desc, JUMP_TEST_ALL); in cnstr_shdsc_aead_null_decap()
183 set_jump_tgt_here(desc, jump_cmd); in cnstr_shdsc_aead_null_decap()
185 set_move_tgt_here(desc, read_move_cmd); in cnstr_shdsc_aead_null_decap()
186 set_move_tgt_here(desc, write_move_cmd); in cnstr_shdsc_aead_null_decap()
187 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in cnstr_shdsc_aead_null_decap()
188 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO | in cnstr_shdsc_aead_null_decap()
190 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO); in cnstr_shdsc_aead_null_decap()
193 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS2 | in cnstr_shdsc_aead_null_decap()
199 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_aead_null_decap()
204 static void init_sh_desc_key_aead(u32 * const desc, in init_sh_desc_key_aead() argument
213 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in init_sh_desc_key_aead()
216 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in init_sh_desc_key_aead()
228 append_key_as_imm(desc, adata->key_virt, adata->keylen_pad, in init_sh_desc_key_aead()
232 append_key(desc, adata->key_dma, adata->keylen, CLASS_2 | in init_sh_desc_key_aead()
236 append_key_as_imm(desc, cdata->key_virt, enckeylen, in init_sh_desc_key_aead()
239 append_key(desc, cdata->key_dma, enckeylen, CLASS_1 | in init_sh_desc_key_aead()
244 append_load_as_imm(desc, nonce, CTR_RFC3686_NONCE_SIZE, in init_sh_desc_key_aead()
247 append_move(desc, in init_sh_desc_key_aead()
254 set_jump_tgt_here(desc, key_jump_cmd); in init_sh_desc_key_aead()
277 void cnstr_shdsc_aead_encap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_aead_encap() argument
283 init_sh_desc_key_aead(desc, cdata, adata, is_rfc3686, nonce); in cnstr_shdsc_aead_encap()
286 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_aead_encap()
293 append_seq_load(desc, 4, LDST_CLASS_DECO | in cnstr_shdsc_aead_encap()
297 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_aead_encap()
301 set_jump_tgt_here(desc, wait_load_cmd); in cnstr_shdsc_aead_encap()
303 append_seq_load(desc, ivsize, LDST_CLASS_1_CCB | in cnstr_shdsc_aead_encap()
309 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_aead_encap()
310 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_aead_encap()
313 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in cnstr_shdsc_aead_encap()
316 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS2 | FIFOLD_TYPE_MSG | in cnstr_shdsc_aead_encap()
321 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB | in cnstr_shdsc_aead_encap()
327 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_aead_encap()
331 append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_aead_encap()
332 append_math_add(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_aead_encap()
333 aead_append_src_dst(desc, FIFOLD_TYPE_MSG1OUT2); in cnstr_shdsc_aead_encap()
336 append_seq_store(desc, icvsize, LDST_CLASS_2_CCB | in cnstr_shdsc_aead_encap()
341 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_aead_encap()
366 void cnstr_shdsc_aead_decap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_aead_decap() argument
373 init_sh_desc_key_aead(desc, cdata, adata, is_rfc3686, nonce); in cnstr_shdsc_aead_decap()
376 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_aead_decap()
383 append_seq_load(desc, 4, LDST_CLASS_DECO | in cnstr_shdsc_aead_decap()
387 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_aead_decap()
391 set_jump_tgt_here(desc, wait_load_cmd); in cnstr_shdsc_aead_decap()
394 append_seq_load(desc, ivsize, LDST_CLASS_1_CCB | in cnstr_shdsc_aead_decap()
400 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_aead_decap()
402 append_math_add_imm_u32(desc, VARSEQOUTLEN, REG3, IMM, ivsize); in cnstr_shdsc_aead_decap()
404 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_aead_decap()
407 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in cnstr_shdsc_aead_decap()
410 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS2 | FIFOLD_TYPE_MSG | in cnstr_shdsc_aead_decap()
414 append_seq_load(desc, ivsize, LDST_CLASS_1_CCB | in cnstr_shdsc_aead_decap()
417 append_move(desc, MOVE_SRC_CLASS1CTX | MOVE_DEST_CLASS2INFIFO | in cnstr_shdsc_aead_decap()
423 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB | in cnstr_shdsc_aead_decap()
430 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_aead_decap()
433 append_dec_op1(desc, cdata->algtype); in cnstr_shdsc_aead_decap()
436 append_math_add(desc, VARSEQINLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_aead_decap()
437 append_math_add(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_aead_decap()
438 aead_append_src_dst(desc, FIFOLD_TYPE_MSG); in cnstr_shdsc_aead_decap()
441 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS2 | in cnstr_shdsc_aead_decap()
446 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_aead_decap()
472 void cnstr_shdsc_aead_givencap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_aead_givencap() argument
482 init_sh_desc_key_aead(desc, cdata, adata, is_rfc3686, nonce); in cnstr_shdsc_aead_givencap()
488 append_seq_load(desc, 4, LDST_CLASS_DECO | in cnstr_shdsc_aead_givencap()
492 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_aead_givencap()
496 set_jump_tgt_here(desc, wait_load_cmd); in cnstr_shdsc_aead_givencap()
501 append_seq_load(desc, ivsize, LDST_CLASS_1_CCB | in cnstr_shdsc_aead_givencap()
512 append_load_imm_u32(desc, geniv, LDST_CLASS_IND_CCB | in cnstr_shdsc_aead_givencap()
514 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in cnstr_shdsc_aead_givencap()
515 append_move(desc, MOVE_WAITCOMP | in cnstr_shdsc_aead_givencap()
519 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO); in cnstr_shdsc_aead_givencap()
523 append_move(desc, MOVE_SRC_CLASS1CTX | MOVE_DEST_OUTFIFO | in cnstr_shdsc_aead_givencap()
528 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_aead_givencap()
532 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_aead_givencap()
533 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_aead_givencap()
536 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in cnstr_shdsc_aead_givencap()
539 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS2 | FIFOLD_TYPE_MSG | in cnstr_shdsc_aead_givencap()
545 append_load_imm_u32(desc, moveiv, LDST_CLASS_IND_CCB | in cnstr_shdsc_aead_givencap()
547 append_load_imm_u32(desc, ivsize, LDST_CLASS_2_CCB | in cnstr_shdsc_aead_givencap()
552 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB | in cnstr_shdsc_aead_givencap()
558 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_aead_givencap()
562 append_math_add(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_aead_givencap()
565 append_seq_fifo_load(desc, ivsize, in cnstr_shdsc_aead_givencap()
569 append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_aead_givencap()
575 wait_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | JUMP_COND_NIFP); in cnstr_shdsc_aead_givencap()
576 set_jump_tgt_here(desc, wait_cmd); in cnstr_shdsc_aead_givencap()
578 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_BOTH | KEY_VLF | in cnstr_shdsc_aead_givencap()
580 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | KEY_VLF); in cnstr_shdsc_aead_givencap()
583 append_seq_store(desc, icvsize, LDST_CLASS_2_CCB | in cnstr_shdsc_aead_givencap()
589 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_aead_givencap()
601 void cnstr_shdsc_gcm_encap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_gcm_encap() argument
607 init_sh_desc(desc, HDR_SHARE_SERIAL); in cnstr_shdsc_gcm_encap()
610 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_gcm_encap()
613 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_gcm_encap()
616 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 | in cnstr_shdsc_gcm_encap()
618 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_gcm_encap()
621 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_gcm_encap()
625 append_math_sub(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_gcm_encap()
626 zero_assoc_jump_cmd2 = append_jump(desc, JUMP_TEST_ALL | in cnstr_shdsc_gcm_encap()
630 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_gcm_encap()
631 zero_assoc_jump_cmd1 = append_jump(desc, JUMP_TEST_ALL | in cnstr_shdsc_gcm_encap()
634 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_gcm_encap()
637 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in cnstr_shdsc_gcm_encap()
640 append_math_sub(desc, VARSEQOUTLEN, SEQINLEN, REG3, CAAM_CMD_SZ); in cnstr_shdsc_gcm_encap()
643 zero_payload_jump_cmd = append_jump(desc, JUMP_TEST_ALL | in cnstr_shdsc_gcm_encap()
647 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in cnstr_shdsc_gcm_encap()
649 set_jump_tgt_here(desc, zero_assoc_jump_cmd1); in cnstr_shdsc_gcm_encap()
651 append_math_sub(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_gcm_encap()
654 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF); in cnstr_shdsc_gcm_encap()
657 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in cnstr_shdsc_gcm_encap()
661 append_jump(desc, JUMP_TEST_ALL | 2); in cnstr_shdsc_gcm_encap()
664 set_jump_tgt_here(desc, zero_payload_jump_cmd); in cnstr_shdsc_gcm_encap()
667 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in cnstr_shdsc_gcm_encap()
671 set_jump_tgt_here(desc, zero_assoc_jump_cmd2); in cnstr_shdsc_gcm_encap()
674 append_seq_store(desc, icvsize, LDST_CLASS_1_CCB | in cnstr_shdsc_gcm_encap()
679 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_gcm_encap()
691 void cnstr_shdsc_gcm_decap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_gcm_decap() argument
696 init_sh_desc(desc, HDR_SHARE_SERIAL); in cnstr_shdsc_gcm_decap()
699 key_jump_cmd = append_jump(desc, JUMP_JSL | in cnstr_shdsc_gcm_decap()
702 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_gcm_decap()
705 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 | in cnstr_shdsc_gcm_decap()
707 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_gcm_decap()
710 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_gcm_decap()
714 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_gcm_decap()
715 zero_assoc_jump_cmd1 = append_jump(desc, JUMP_TEST_ALL | in cnstr_shdsc_gcm_decap()
718 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_gcm_decap()
721 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in cnstr_shdsc_gcm_decap()
724 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in cnstr_shdsc_gcm_decap()
727 set_jump_tgt_here(desc, zero_assoc_jump_cmd1); in cnstr_shdsc_gcm_decap()
730 append_math_sub(desc, VARSEQINLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_gcm_decap()
733 zero_payload_jump_cmd = append_jump(desc, JUMP_TEST_ALL | in cnstr_shdsc_gcm_decap()
736 append_math_sub(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_gcm_decap()
739 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF); in cnstr_shdsc_gcm_decap()
742 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in cnstr_shdsc_gcm_decap()
746 set_jump_tgt_here(desc, zero_payload_jump_cmd); in cnstr_shdsc_gcm_decap()
749 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS1 | in cnstr_shdsc_gcm_decap()
754 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_gcm_decap()
767 void cnstr_shdsc_rfc4106_encap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_rfc4106_encap() argument
772 init_sh_desc(desc, HDR_SHARE_SERIAL); in cnstr_shdsc_rfc4106_encap()
775 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_rfc4106_encap()
778 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_rfc4106_encap()
781 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 | in cnstr_shdsc_rfc4106_encap()
783 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_rfc4106_encap()
786 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_rfc4106_encap()
789 append_math_sub_imm_u32(desc, VARSEQINLEN, REG3, IMM, 8); in cnstr_shdsc_rfc4106_encap()
790 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_rfc4106_encap()
793 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in cnstr_shdsc_rfc4106_encap()
797 append_seq_fifo_load(desc, 8, FIFOLD_CLASS_SKIP); in cnstr_shdsc_rfc4106_encap()
800 append_math_sub(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_rfc4106_encap()
803 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLD_TYPE_MSG); in cnstr_shdsc_rfc4106_encap()
806 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in cnstr_shdsc_rfc4106_encap()
809 append_math_sub(desc, VARSEQOUTLEN, VARSEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_rfc4106_encap()
812 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF); in cnstr_shdsc_rfc4106_encap()
815 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in cnstr_shdsc_rfc4106_encap()
819 append_seq_store(desc, icvsize, LDST_CLASS_1_CCB | in cnstr_shdsc_rfc4106_encap()
825 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_rfc4106_encap()
838 void cnstr_shdsc_rfc4106_decap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_rfc4106_decap() argument
843 init_sh_desc(desc, HDR_SHARE_SERIAL); in cnstr_shdsc_rfc4106_decap()
846 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_rfc4106_decap()
849 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_rfc4106_decap()
853 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 | in cnstr_shdsc_rfc4106_decap()
855 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_rfc4106_decap()
858 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_rfc4106_decap()
861 append_math_sub_imm_u32(desc, VARSEQINLEN, REG3, IMM, 8); in cnstr_shdsc_rfc4106_decap()
862 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); in cnstr_shdsc_rfc4106_decap()
865 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in cnstr_shdsc_rfc4106_decap()
869 append_seq_fifo_load(desc, 8, FIFOLD_CLASS_SKIP); in cnstr_shdsc_rfc4106_decap()
872 append_math_sub(desc, VARSEQINLEN, SEQOUTLEN, REG3, CAAM_CMD_SZ); in cnstr_shdsc_rfc4106_decap()
875 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLD_TYPE_MSG); in cnstr_shdsc_rfc4106_decap()
878 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); in cnstr_shdsc_rfc4106_decap()
881 append_math_sub(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_rfc4106_decap()
884 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF); in cnstr_shdsc_rfc4106_decap()
887 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF | in cnstr_shdsc_rfc4106_decap()
891 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS1 | in cnstr_shdsc_rfc4106_decap()
897 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_rfc4106_decap()
910 void cnstr_shdsc_rfc4543_encap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_rfc4543_encap() argument
915 init_sh_desc(desc, HDR_SHARE_SERIAL); in cnstr_shdsc_rfc4543_encap()
918 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_rfc4543_encap()
921 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_rfc4543_encap()
924 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 | in cnstr_shdsc_rfc4543_encap()
926 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_rfc4543_encap()
929 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_rfc4543_encap()
933 append_math_sub(desc, REG3, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_rfc4543_encap()
940 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF | MOVE_DEST_MATH3 | in cnstr_shdsc_rfc4543_encap()
942 write_move_cmd = append_move(desc, MOVE_SRC_MATH3 | MOVE_DEST_DESCBUF | in cnstr_shdsc_rfc4543_encap()
946 append_math_sub(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_rfc4543_encap()
949 append_math_sub(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_rfc4543_encap()
952 aead_append_src_dst(desc, FIFOLD_TYPE_AAD); in cnstr_shdsc_rfc4543_encap()
954 set_move_tgt_here(desc, read_move_cmd); in cnstr_shdsc_rfc4543_encap()
955 set_move_tgt_here(desc, write_move_cmd); in cnstr_shdsc_rfc4543_encap()
956 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in cnstr_shdsc_rfc4543_encap()
958 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO); in cnstr_shdsc_rfc4543_encap()
961 append_seq_store(desc, icvsize, LDST_CLASS_1_CCB | in cnstr_shdsc_rfc4543_encap()
967 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_rfc4543_encap()
980 void cnstr_shdsc_rfc4543_decap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_rfc4543_decap() argument
985 init_sh_desc(desc, HDR_SHARE_SERIAL); in cnstr_shdsc_rfc4543_decap()
988 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_rfc4543_decap()
991 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_rfc4543_decap()
994 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 | in cnstr_shdsc_rfc4543_decap()
996 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_rfc4543_decap()
999 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_rfc4543_decap()
1003 append_math_sub(desc, REG3, SEQOUTLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_rfc4543_decap()
1010 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF | MOVE_DEST_MATH3 | in cnstr_shdsc_rfc4543_decap()
1012 write_move_cmd = append_move(desc, MOVE_SRC_MATH3 | MOVE_DEST_DESCBUF | in cnstr_shdsc_rfc4543_decap()
1016 append_math_sub(desc, VARSEQINLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_rfc4543_decap()
1019 append_math_sub(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ); in cnstr_shdsc_rfc4543_decap()
1022 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF); in cnstr_shdsc_rfc4543_decap()
1025 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_BOTH | FIFOLDST_VLF | in cnstr_shdsc_rfc4543_decap()
1028 set_move_tgt_here(desc, read_move_cmd); in cnstr_shdsc_rfc4543_decap()
1029 set_move_tgt_here(desc, write_move_cmd); in cnstr_shdsc_rfc4543_decap()
1030 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in cnstr_shdsc_rfc4543_decap()
1032 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO); in cnstr_shdsc_rfc4543_decap()
1033 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO); in cnstr_shdsc_rfc4543_decap()
1036 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS1 | in cnstr_shdsc_rfc4543_decap()
1042 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_rfc4543_decap()
1051 static inline void ablkcipher_append_src_dst(u32 *desc) in ablkcipher_append_src_dst() argument
1053 append_math_add(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in ablkcipher_append_src_dst()
1054 append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ); in ablkcipher_append_src_dst()
1055 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | in ablkcipher_append_src_dst()
1057 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | KEY_VLF); in ablkcipher_append_src_dst()
1070 void cnstr_shdsc_ablkcipher_encap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_ablkcipher_encap() argument
1076 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in cnstr_shdsc_ablkcipher_encap()
1078 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_ablkcipher_encap()
1082 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_ablkcipher_encap()
1089 append_load_as_imm(desc, nonce, CTR_RFC3686_NONCE_SIZE, in cnstr_shdsc_ablkcipher_encap()
1092 append_move(desc, MOVE_WAITCOMP | MOVE_SRC_OUTFIFO | in cnstr_shdsc_ablkcipher_encap()
1097 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_ablkcipher_encap()
1100 append_seq_load(desc, ivsize, LDST_SRCDST_BYTE_CONTEXT | in cnstr_shdsc_ablkcipher_encap()
1105 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB | in cnstr_shdsc_ablkcipher_encap()
1111 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_ablkcipher_encap()
1115 ablkcipher_append_src_dst(desc); in cnstr_shdsc_ablkcipher_encap()
1120 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_ablkcipher_encap()
1135 void cnstr_shdsc_ablkcipher_decap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_ablkcipher_decap() argument
1141 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in cnstr_shdsc_ablkcipher_decap()
1143 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_ablkcipher_decap()
1147 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_ablkcipher_decap()
1154 append_load_as_imm(desc, nonce, CTR_RFC3686_NONCE_SIZE, in cnstr_shdsc_ablkcipher_decap()
1157 append_move(desc, MOVE_WAITCOMP | MOVE_SRC_OUTFIFO | in cnstr_shdsc_ablkcipher_decap()
1162 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_ablkcipher_decap()
1165 append_seq_load(desc, ivsize, LDST_SRCDST_BYTE_CONTEXT | in cnstr_shdsc_ablkcipher_decap()
1170 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB | in cnstr_shdsc_ablkcipher_decap()
1177 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_ablkcipher_decap()
1180 append_dec_op1(desc, cdata->algtype); in cnstr_shdsc_ablkcipher_decap()
1183 ablkcipher_append_src_dst(desc); in cnstr_shdsc_ablkcipher_decap()
1188 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_ablkcipher_decap()
1204 void cnstr_shdsc_ablkcipher_givencap(u32 * const desc, struct alginfo *cdata, in cnstr_shdsc_ablkcipher_givencap() argument
1210 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in cnstr_shdsc_ablkcipher_givencap()
1212 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_ablkcipher_givencap()
1216 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_ablkcipher_givencap()
1223 append_load_as_imm(desc, nonce, CTR_RFC3686_NONCE_SIZE, in cnstr_shdsc_ablkcipher_givencap()
1226 append_move(desc, MOVE_WAITCOMP | MOVE_SRC_OUTFIFO | in cnstr_shdsc_ablkcipher_givencap()
1230 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_ablkcipher_givencap()
1236 append_load_imm_u32(desc, geniv, LDST_CLASS_IND_CCB | in cnstr_shdsc_ablkcipher_givencap()
1238 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO); in cnstr_shdsc_ablkcipher_givencap()
1239 append_move(desc, MOVE_WAITCOMP | MOVE_SRC_INFIFO | in cnstr_shdsc_ablkcipher_givencap()
1242 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO); in cnstr_shdsc_ablkcipher_givencap()
1245 append_seq_store(desc, ivsize, LDST_SRCDST_BYTE_CONTEXT | in cnstr_shdsc_ablkcipher_givencap()
1250 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB | in cnstr_shdsc_ablkcipher_givencap()
1256 append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | JUMP_COND_NCP | in cnstr_shdsc_ablkcipher_givencap()
1260 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_ablkcipher_givencap()
1264 ablkcipher_append_src_dst(desc); in cnstr_shdsc_ablkcipher_givencap()
1269 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_ablkcipher_givencap()
1281 void cnstr_shdsc_xts_ablkcipher_encap(u32 * const desc, struct alginfo *cdata) in cnstr_shdsc_xts_ablkcipher_encap() argument
1286 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in cnstr_shdsc_xts_ablkcipher_encap()
1288 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_xts_ablkcipher_encap()
1292 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_xts_ablkcipher_encap()
1296 append_load_as_imm(desc, (void *)§or_size, 8, LDST_CLASS_1_CCB | in cnstr_shdsc_xts_ablkcipher_encap()
1300 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_xts_ablkcipher_encap()
1307 append_seq_load(desc, 8, LDST_SRCDST_BYTE_CONTEXT | LDST_CLASS_1_CCB | in cnstr_shdsc_xts_ablkcipher_encap()
1309 append_seq_fifo_load(desc, 8, FIFOLD_CLASS_SKIP); in cnstr_shdsc_xts_ablkcipher_encap()
1312 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL | in cnstr_shdsc_xts_ablkcipher_encap()
1316 ablkcipher_append_src_dst(desc); in cnstr_shdsc_xts_ablkcipher_encap()
1321 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_xts_ablkcipher_encap()
1333 void cnstr_shdsc_xts_ablkcipher_decap(u32 * const desc, struct alginfo *cdata) in cnstr_shdsc_xts_ablkcipher_decap() argument
1338 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX); in cnstr_shdsc_xts_ablkcipher_decap()
1340 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | in cnstr_shdsc_xts_ablkcipher_decap()
1344 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, in cnstr_shdsc_xts_ablkcipher_decap()
1348 append_load_as_imm(desc, (void *)§or_size, 8, LDST_CLASS_1_CCB | in cnstr_shdsc_xts_ablkcipher_decap()
1352 set_jump_tgt_here(desc, key_jump_cmd); in cnstr_shdsc_xts_ablkcipher_decap()
1359 append_seq_load(desc, 8, LDST_SRCDST_BYTE_CONTEXT | LDST_CLASS_1_CCB | in cnstr_shdsc_xts_ablkcipher_decap()
1361 append_seq_fifo_load(desc, 8, FIFOLD_CLASS_SKIP); in cnstr_shdsc_xts_ablkcipher_decap()
1364 append_dec_op1(desc, cdata->algtype); in cnstr_shdsc_xts_ablkcipher_decap()
1367 ablkcipher_append_src_dst(desc); in cnstr_shdsc_xts_ablkcipher_decap()
1372 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc), 1); in cnstr_shdsc_xts_ablkcipher_decap()