Lines Matching refs:desc

16 static inline void aead_append_src_dst(u32 *desc, u32 msg_type)
18 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | KEY_VLF);
19 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_BOTH |
24 static inline void append_dec_op1(u32 *desc, u32 type)
30 append_operation(desc, type | OP_ALG_AS_INITFINAL |
35 jump_cmd = append_jump(desc, JUMP_TEST_ALL | JUMP_COND_SHRD);
36 append_operation(desc, type | OP_ALG_AS_INIT | OP_ALG_DECRYPT);
37 uncond_jump_cmd = append_jump(desc, JUMP_TEST_ALL);
38 set_jump_tgt_here(desc, jump_cmd);
39 append_operation(desc, type | OP_ALG_AS_INIT | OP_ALG_DECRYPT |
41 set_jump_tgt_here(desc, uncond_jump_cmd);
47 * @desc: pointer to buffer used for descriptor construction
56 void cnstr_shdsc_aead_null_encap(u32 * const desc, struct alginfo *adata,
61 init_sh_desc(desc, HDR_SHARE_SERIAL);
64 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
68 append_key_as_imm(desc, adata->key_virt,
73 append_key(desc, adata->key_dma, adata->keylen,
76 append_proto_dkp(desc, adata);
78 set_jump_tgt_here(desc, key_jump_cmd);
81 append_math_sub(desc, REG3, SEQINLEN, REG0, CAAM_CMD_SZ);
84 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ);
85 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ);
92 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF |
95 write_move_cmd = append_move(desc, MOVE_SRC_MATH3 |
101 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL |
105 aead_append_src_dst(desc, FIFOLD_TYPE_MSG | FIFOLD_TYPE_FLUSH1);
107 set_move_tgt_here(desc, read_move_cmd);
108 set_move_tgt_here(desc, write_move_cmd);
109 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO);
110 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO |
114 append_seq_store(desc, icvsize, LDST_CLASS_2_CCB |
118 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
126 * @desc: pointer to buffer used for descriptor construction
135 void cnstr_shdsc_aead_null_decap(u32 * const desc, struct alginfo *adata,
140 init_sh_desc(desc, HDR_SHARE_SERIAL);
143 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
147 append_key_as_imm(desc, adata->key_virt,
152 append_key(desc, adata->key_dma, adata->keylen,
155 append_proto_dkp(desc, adata);
157 set_jump_tgt_here(desc, key_jump_cmd);
160 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL |
164 append_math_sub(desc, REG2, SEQOUTLEN, REG0, CAAM_CMD_SZ);
167 append_math_add(desc, VARSEQINLEN, ZERO, REG2, CAAM_CMD_SZ);
168 append_math_add(desc, VARSEQOUTLEN, ZERO, REG2, CAAM_CMD_SZ);
175 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF |
178 write_move_cmd = append_move(desc, MOVE_SRC_MATH2 |
184 aead_append_src_dst(desc, FIFOLD_TYPE_MSG | FIFOLD_TYPE_FLUSH1);
190 jump_cmd = append_jump(desc, JUMP_TEST_ALL);
191 set_jump_tgt_here(desc, jump_cmd);
193 set_move_tgt_here(desc, read_move_cmd);
194 set_move_tgt_here(desc, write_move_cmd);
195 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO);
196 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO |
198 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO);
201 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS2 |
205 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
210 static void init_sh_desc_key_aead(u32 * const desc,
219 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX);
222 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
235 append_key_as_imm(desc, adata->key_virt,
240 append_key(desc, adata->key_dma, adata->keylen,
243 append_proto_dkp(desc, adata);
247 append_key_as_imm(desc, cdata->key_virt, enckeylen,
250 append_key(desc, cdata->key_dma, enckeylen, CLASS_1 |
255 append_load_as_imm(desc, nonce, CTR_RFC3686_NONCE_SIZE,
258 append_move(desc,
265 set_jump_tgt_here(desc, key_jump_cmd);
271 * @desc: pointer to buffer used for descriptor construction
288 void cnstr_shdsc_aead_encap(u32 * const desc, struct alginfo *cdata,
295 init_sh_desc_key_aead(desc, cdata, adata, is_rfc3686, nonce, era);
298 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL |
305 append_seq_load(desc, 4, LDST_CLASS_DECO |
309 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
313 set_jump_tgt_here(desc, wait_load_cmd);
315 append_seq_load(desc, ivsize, LDST_CLASS_1_CCB |
322 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ);
323 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ);
325 append_math_add(desc, VARSEQINLEN, ZERO, DPOVRD, CAAM_CMD_SZ);
326 append_math_add(desc, VARSEQOUTLEN, ZERO, DPOVRD, CAAM_CMD_SZ);
330 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF);
333 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS2 | FIFOLD_TYPE_MSG |
338 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB |
344 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
348 append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
349 append_math_add(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
350 aead_append_src_dst(desc, FIFOLD_TYPE_MSG1OUT2);
353 append_seq_store(desc, icvsize, LDST_CLASS_2_CCB |
357 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
365 * @desc: pointer to buffer used for descriptor construction
383 void cnstr_shdsc_aead_decap(u32 * const desc, struct alginfo *cdata,
390 init_sh_desc_key_aead(desc, cdata, adata, is_rfc3686, nonce, era);
393 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL |
400 append_seq_load(desc, 4, LDST_CLASS_DECO |
404 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
408 set_jump_tgt_here(desc, wait_load_cmd);
411 append_seq_load(desc, ivsize, LDST_CLASS_1_CCB |
418 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ);
420 append_math_add_imm_u32(desc, VARSEQOUTLEN, REG3, IMM,
423 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3,
426 append_math_add(desc, VARSEQINLEN, ZERO, DPOVRD, CAAM_CMD_SZ);
428 append_math_add_imm_u32(desc, VARSEQOUTLEN, DPOVRD, IMM,
431 append_math_add(desc, VARSEQOUTLEN, ZERO, DPOVRD,
436 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF);
439 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS2 | FIFOLD_TYPE_MSG |
443 append_seq_load(desc, ivsize, LDST_CLASS_1_CCB |
446 append_move(desc, MOVE_SRC_CLASS1CTX | MOVE_DEST_CLASS2INFIFO |
452 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB |
459 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
462 append_dec_op1(desc, cdata->algtype);
465 append_math_add(desc, VARSEQINLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ);
466 append_math_add(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ);
467 aead_append_src_dst(desc, FIFOLD_TYPE_MSG);
470 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS2 |
474 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
483 * @desc: pointer to buffer used for descriptor construction
500 void cnstr_shdsc_aead_givencap(u32 * const desc, struct alginfo *cdata,
510 init_sh_desc_key_aead(desc, cdata, adata, is_rfc3686, nonce, era);
516 append_seq_load(desc, 4, LDST_CLASS_DECO |
520 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
524 set_jump_tgt_here(desc, wait_load_cmd);
529 append_seq_load(desc, ivsize, LDST_CLASS_1_CCB |
540 append_load_imm_u32(desc, geniv, LDST_CLASS_IND_CCB |
542 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO);
543 append_move(desc, MOVE_WAITCOMP |
547 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO);
551 append_move(desc, MOVE_SRC_CLASS1CTX | MOVE_DEST_OUTFIFO |
556 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL |
561 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ);
562 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ);
564 append_math_add(desc, VARSEQINLEN, ZERO, DPOVRD, CAAM_CMD_SZ);
565 append_math_add(desc, VARSEQOUTLEN, ZERO, DPOVRD, CAAM_CMD_SZ);
569 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF);
572 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS2 | FIFOLD_TYPE_MSG |
578 append_load_imm_u32(desc, moveiv, LDST_CLASS_IND_CCB |
580 append_load_imm_u32(desc, ivsize, LDST_CLASS_2_CCB |
585 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB |
591 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
595 append_math_add(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
598 append_seq_fifo_load(desc, ivsize,
602 append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
608 wait_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL | JUMP_COND_NIFP);
609 set_jump_tgt_here(desc, wait_cmd);
611 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_BOTH | KEY_VLF |
613 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | KEY_VLF);
616 append_seq_store(desc, icvsize, LDST_CLASS_2_CCB |
620 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
627 * @desc: pointer to buffer used for descriptor construction
634 void cnstr_shdsc_gcm_encap(u32 * const desc, struct alginfo *cdata,
641 init_sh_desc(desc, HDR_SHARE_SERIAL);
644 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
647 append_key_as_imm(desc, cdata->key_virt, cdata->keylen,
650 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 |
652 set_jump_tgt_here(desc, key_jump_cmd);
655 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
662 append_seq_load(desc, 4, LDST_CLASS_DECO |
666 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
670 set_jump_tgt_here(desc, wait_load_cmd);
672 append_math_sub_imm_u32(desc, VARSEQOUTLEN, SEQINLEN, IMM,
675 append_math_sub(desc, VARSEQOUTLEN, SEQINLEN, REG0,
680 zero_assoc_jump_cmd2 = append_jump(desc, JUMP_TEST_ALL |
684 append_seq_fifo_load(desc, ivsize, FIFOLD_CLASS_CLASS1 |
688 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ);
689 zero_assoc_jump_cmd1 = append_jump(desc, JUMP_TEST_ALL |
692 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ);
695 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF);
698 append_math_sub(desc, VARSEQOUTLEN, SEQINLEN, REG3, CAAM_CMD_SZ);
701 zero_payload_jump_cmd = append_jump(desc, JUMP_TEST_ALL |
705 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF |
707 set_jump_tgt_here(desc, zero_assoc_jump_cmd1);
709 append_math_sub(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
712 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF);
715 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF |
720 append_jump(desc, JUMP_TEST_ALL | 4);
722 append_jump(desc, JUMP_TEST_ALL | 2);
725 set_jump_tgt_here(desc, zero_payload_jump_cmd);
728 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF |
732 append_jump(desc, JUMP_TEST_ALL | 2);
735 set_jump_tgt_here(desc, zero_assoc_jump_cmd2);
738 append_seq_fifo_load(desc, ivsize, FIFOLD_CLASS_CLASS1 |
743 append_seq_store(desc, icvsize, LDST_CLASS_1_CCB |
747 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
754 * @desc: pointer to buffer used for descriptor construction
761 void cnstr_shdsc_gcm_decap(u32 * const desc, struct alginfo *cdata,
767 init_sh_desc(desc, HDR_SHARE_SERIAL);
770 key_jump_cmd = append_jump(desc, JUMP_JSL |
773 append_key_as_imm(desc, cdata->key_virt, cdata->keylen,
776 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 |
778 set_jump_tgt_here(desc, key_jump_cmd);
781 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
788 append_seq_load(desc, 4, LDST_CLASS_DECO |
792 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
796 set_jump_tgt_here(desc, wait_load_cmd);
798 append_seq_fifo_load(desc, ivsize, FIFOLD_CLASS_CLASS1 |
803 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ);
804 zero_assoc_jump_cmd1 = append_jump(desc, JUMP_TEST_ALL |
807 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ);
810 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF);
813 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF |
816 set_jump_tgt_here(desc, zero_assoc_jump_cmd1);
819 append_math_sub(desc, VARSEQINLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ);
822 zero_payload_jump_cmd = append_jump(desc, JUMP_TEST_ALL |
825 append_math_sub(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ);
828 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF);
831 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF |
835 set_jump_tgt_here(desc, zero_payload_jump_cmd);
838 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS1 |
842 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
850 * @desc: pointer to buffer used for descriptor construction
861 void cnstr_shdsc_rfc4106_encap(u32 * const desc, struct alginfo *cdata,
866 init_sh_desc(desc, HDR_SHARE_SERIAL);
869 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
872 append_key_as_imm(desc, cdata->key_virt, cdata->keylen,
875 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 |
877 set_jump_tgt_here(desc, key_jump_cmd);
880 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
887 append_seq_load(desc, 4, LDST_CLASS_DECO |
891 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
895 set_jump_tgt_here(desc, wait_load_cmd);
898 append_fifo_load_as_imm(desc, (void *)(cdata->key_virt +
901 append_seq_fifo_load(desc, ivsize, FIFOLD_CLASS_CLASS1 |
905 append_math_sub_imm_u32(desc, VARSEQINLEN, REG3, IMM, ivsize);
906 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ);
909 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF);
912 append_math_sub(desc, VARSEQOUTLEN, SEQINLEN, REG3, CAAM_CMD_SZ);
915 zero_cryptlen_jump_cmd = append_jump(desc, JUMP_TEST_ALL |
919 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF |
923 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA);
926 append_seq_fifo_load(desc, ivsize, FIFOLD_CLASS_SKIP);
927 append_math_add(desc, VARSEQINLEN, VARSEQOUTLEN, REG0, CAAM_CMD_SZ);
930 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF);
933 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF |
937 skip_instructions = append_jump(desc, JUMP_TEST_ALL);
940 set_jump_tgt_here(desc, zero_cryptlen_jump_cmd);
943 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF |
946 set_jump_tgt_here(desc, skip_instructions);
949 append_seq_store(desc, icvsize, LDST_CLASS_1_CCB |
953 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
961 * @desc: pointer to buffer used for descriptor construction
968 void cnstr_shdsc_rfc4106_decap(u32 * const desc, struct alginfo *cdata,
974 init_sh_desc(desc, HDR_SHARE_SERIAL);
977 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
980 append_key_as_imm(desc, cdata->key_virt, cdata->keylen,
984 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 |
986 set_jump_tgt_here(desc, key_jump_cmd);
989 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
996 append_seq_load(desc, 4, LDST_CLASS_DECO |
1000 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
1004 set_jump_tgt_here(desc, wait_load_cmd);
1007 append_fifo_load_as_imm(desc, (void *)(cdata->key_virt +
1010 append_seq_fifo_load(desc, ivsize, FIFOLD_CLASS_CLASS1 |
1014 append_math_sub_imm_u32(desc, VARSEQINLEN, REG3, IMM, ivsize);
1015 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ);
1018 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF |
1022 append_seq_fifo_load(desc, ivsize, FIFOLD_CLASS_SKIP);
1025 append_math_sub(desc, VARSEQINLEN, SEQOUTLEN, REG3, CAAM_CMD_SZ);
1028 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLD_TYPE_MSG);
1031 append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF);
1034 append_math_sub(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ);
1037 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF);
1040 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 | FIFOLDST_VLF |
1044 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS1 |
1048 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
1056 * @desc: pointer to buffer used for descriptor construction
1063 void cnstr_shdsc_rfc4543_encap(u32 * const desc, struct alginfo *cdata,
1069 init_sh_desc(desc, HDR_SHARE_SERIAL);
1072 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
1075 append_key_as_imm(desc, cdata->key_virt, cdata->keylen,
1078 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 |
1080 set_jump_tgt_here(desc, key_jump_cmd);
1083 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
1088 append_seq_fifo_load(desc, 4, FIFOLD_CLASS_SKIP);
1091 append_fifo_load_as_imm(desc, (void *)(cdata->key_virt +
1094 append_seq_fifo_load(desc, ivsize, FIFOLD_CLASS_CLASS1 |
1099 append_math_sub(desc, REG3, SEQINLEN, REG0, CAAM_CMD_SZ);
1106 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF | MOVE_DEST_MATH3 |
1108 write_move_cmd = append_move(desc, MOVE_SRC_MATH3 | MOVE_DEST_DESCBUF |
1112 append_math_sub(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
1115 append_math_sub(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
1118 aead_append_src_dst(desc, FIFOLD_TYPE_AAD);
1120 set_move_tgt_here(desc, read_move_cmd);
1121 set_move_tgt_here(desc, write_move_cmd);
1122 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO);
1124 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO);
1127 append_seq_store(desc, icvsize, LDST_CLASS_1_CCB |
1131 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
1139 * @desc: pointer to buffer used for descriptor construction
1146 void cnstr_shdsc_rfc4543_decap(u32 * const desc, struct alginfo *cdata,
1152 init_sh_desc(desc, HDR_SHARE_SERIAL);
1155 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
1158 append_key_as_imm(desc, cdata->key_virt, cdata->keylen,
1161 append_key(desc, cdata->key_dma, cdata->keylen, CLASS_1 |
1163 set_jump_tgt_here(desc, key_jump_cmd);
1166 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
1171 append_seq_fifo_load(desc, 4, FIFOLD_CLASS_SKIP);
1174 append_fifo_load_as_imm(desc, (void *)(cdata->key_virt +
1177 append_seq_fifo_load(desc, ivsize, FIFOLD_CLASS_CLASS1 |
1182 append_math_sub(desc, REG3, SEQOUTLEN, REG0, CAAM_CMD_SZ);
1189 read_move_cmd = append_move(desc, MOVE_SRC_DESCBUF | MOVE_DEST_MATH3 |
1191 write_move_cmd = append_move(desc, MOVE_SRC_MATH3 | MOVE_DEST_DESCBUF |
1195 append_math_sub(desc, VARSEQINLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ);
1198 append_math_sub(desc, VARSEQOUTLEN, SEQOUTLEN, REG0, CAAM_CMD_SZ);
1201 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | FIFOLDST_VLF);
1204 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_BOTH | FIFOLDST_VLF |
1207 set_move_tgt_here(desc, read_move_cmd);
1208 set_move_tgt_here(desc, write_move_cmd);
1209 append_cmd(desc, CMD_LOAD | DISABLE_AUTO_INFO_FIFO);
1211 append_move(desc, MOVE_SRC_INFIFO_CL | MOVE_DEST_OUTFIFO);
1212 append_cmd(desc, CMD_LOAD | ENABLE_AUTO_INFO_FIFO);
1215 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS1 |
1219 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
1228 * @desc: pointer to buffer used for descriptor construction
1240 void cnstr_shdsc_chachapoly(u32 * const desc, struct alginfo *cdata,
1250 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX);
1253 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
1256 append_key_as_imm(desc, cdata->key_virt, cdata->keylen, cdata->keylen,
1261 append_load_as_imm(desc, cdata->key_virt + cdata->keylen, 4,
1265 set_jump_tgt_here(desc, key_jump_cmd);
1269 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL |
1271 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
1274 append_operation(desc, adata->algtype | OP_ALG_AS_INITFINAL |
1276 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
1285 append_seq_load(desc, 4, LDST_CLASS_DECO |
1289 wait_load_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
1293 set_jump_tgt_here(desc, wait_load_cmd);
1295 append_seq_load(desc, ivsize, LDST_CLASS_1_CCB |
1308 append_load_imm_u32(desc, nfifo, LDST_CLASS_IND_CCB |
1311 append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ);
1312 append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ);
1313 append_seq_fifo_load(desc, 0, FIFOLD_TYPE_NOINFOFIFO |
1315 append_move_len(desc, MOVE_AUX_LS | MOVE_SRC_AUX_ABLK |
1317 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | LDST_VLF);
1321 append_seq_fifo_store(desc, ivsize, FIFOST_TYPE_METADATA |
1324 wait_cmd = append_jump(desc, JUMP_JSL | JUMP_TYPE_LOCAL |
1326 set_jump_tgt_here(desc, wait_cmd);
1330 append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
1331 append_math_add(desc, VARSEQOUTLEN, SEQINLEN, REG0,
1333 aead_append_src_dst(desc, FIFOLD_TYPE_MSG1OUT2);
1336 append_seq_store(desc, icvsize, LDST_CLASS_2_CCB |
1340 append_math_add(desc, VARSEQINLEN, SEQOUTLEN, REG0,
1342 append_math_add(desc, VARSEQOUTLEN, SEQOUTLEN, REG0,
1344 aead_append_src_dst(desc, FIFOLD_TYPE_MSG);
1347 append_seq_fifo_load(desc, icvsize, FIFOLD_CLASS_CLASS2 |
1352 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
1358 static inline void skcipher_append_src_dst(u32 *desc)
1360 append_math_add(desc, VARSEQOUTLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
1361 append_math_add(desc, VARSEQINLEN, SEQINLEN, REG0, CAAM_CMD_SZ);
1362 append_seq_fifo_load(desc, 0, FIFOLD_CLASS_CLASS1 |
1364 append_seq_fifo_store(desc, 0, FIFOST_TYPE_MESSAGE_DATA | KEY_VLF);
1369 * @desc: pointer to buffer used for descriptor construction
1378 void cnstr_shdsc_skcipher_encap(u32 * const desc, struct alginfo *cdata,
1387 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX);
1389 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
1393 append_key_as_imm(desc, cdata->key_virt, cdata->keylen,
1400 append_load_as_imm(desc, nonce, CTR_RFC3686_NONCE_SIZE,
1403 append_move(desc, MOVE_WAITCOMP | MOVE_SRC_OUTFIFO |
1408 set_jump_tgt_here(desc, key_jump_cmd);
1412 append_seq_load(desc, ivsize, LDST_SRCDST_BYTE_CONTEXT |
1418 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB |
1426 append_operation(desc, options);
1429 skcipher_append_src_dst(desc);
1433 append_seq_store(desc, ivsize, LDST_SRCDST_BYTE_CONTEXT |
1438 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
1445 * @desc: pointer to buffer used for descriptor construction
1454 void cnstr_shdsc_skcipher_decap(u32 * const desc, struct alginfo *cdata,
1462 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX);
1464 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
1468 append_key_as_imm(desc, cdata->key_virt, cdata->keylen,
1475 append_load_as_imm(desc, nonce, CTR_RFC3686_NONCE_SIZE,
1478 append_move(desc, MOVE_WAITCOMP | MOVE_SRC_OUTFIFO |
1483 set_jump_tgt_here(desc, key_jump_cmd);
1487 append_seq_load(desc, ivsize, LDST_SRCDST_BYTE_CONTEXT |
1493 append_load_imm_be32(desc, 1, LDST_IMM | LDST_CLASS_1_CCB |
1500 append_operation(desc, cdata->algtype | OP_ALG_AS_INIT |
1503 append_dec_op1(desc, cdata->algtype);
1506 skcipher_append_src_dst(desc);
1510 append_seq_store(desc, ivsize, LDST_SRCDST_BYTE_CONTEXT |
1515 DUMP_PREFIX_ADDRESS, 16, 4, desc, desc_bytes(desc),
1522 * @desc: pointer to buffer used for descriptor construction
1526 void cnstr_shdsc_xts_skcipher_encap(u32 * const desc, struct alginfo *cdata)
1537 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX);
1539 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
1543 append_key_as_imm(desc, cdata->key_virt, cdata->keylen,
1547 append_load_as_imm(desc, (void *)&sector_size, 8, LDST_CLASS_1_CCB |
1551 set_jump_tgt_here(desc, key_jump_cmd);
1558 append_seq_load(desc, 8, LDST_SRCDST_BYTE_CONTEXT | LDST_CLASS_1_CCB |
1560 append_seq_load(desc, 8, LDST_SRCDST_BYTE_CONTEXT | LDST_CLASS_1_CCB |
1564 append_operation(desc, cdata->algtype | OP_ALG_AS_INITFINAL |
1568 skcipher_append_src_dst(desc);
1571 append_seq_store(desc, 8, LDST_SRCDST_BYTE_CONTEXT | LDST_CLASS_1_CCB |
1573 append_seq_store(desc, 8, LDST_SRCDST_BYTE_CONTEXT | LDST_CLASS_1_CCB |
1578 desc, desc_bytes(desc), 1);
1584 * @desc: pointer to buffer used for descriptor construction
1588 void cnstr_shdsc_xts_skcipher_decap(u32 * const desc, struct alginfo *cdata)
1599 init_sh_desc(desc, HDR_SHARE_SERIAL | HDR_SAVECTX);
1601 key_jump_cmd = append_jump(desc, JUMP_JSL | JUMP_TEST_ALL |
1605 append_key_as_imm(desc, cdata->key_virt, cdata->keylen,
1609 append_load_as_imm(desc, (void *)&sector_size, 8, LDST_CLASS_1_CCB |
1613 set_jump_tgt_here(desc, key_jump_cmd);
1620 append_seq_load(desc, 8, LDST_SRCDST_BYTE_CONTEXT | LDST_CLASS_1_CCB |
1622 append_seq_load(desc, 8, LDST_SRCDST_BYTE_CONTEXT | LDST_CLASS_1_CCB |
1625 append_dec_op1(desc, cdata->algtype);
1628 skcipher_append_src_dst(desc);
1631 append_seq_store(desc, 8, LDST_SRCDST_BYTE_CONTEXT | LDST_CLASS_1_CCB |
1633 append_seq_store(desc, 8, LDST_SRCDST_BYTE_CONTEXT | LDST_CLASS_1_CCB |
1637 ": ", DUMP_PREFIX_ADDRESS, 16, 4, desc,
1638 desc_bytes(desc), 1);