Lines Matching full:operation

196 /* Lock to stop cryptocop to start processing of a new operation. The holder
224 …t cryptocop_job_queue_insert(cryptocop_queue_priority prio, struct cryptocop_operation *operation);
225 …tic int cryptocop_job_setup(struct cryptocop_prio_job **pj, struct cryptocop_operation *operation);
528 /* Map the ouput length of the transform to operation output starting on the inject index. */
529 static int create_input_descriptors(struct cryptocop_operation *operation, struct cryptocop_tfrm_ct… in create_input_descriptors() argument
544 …if (((tc->produced + tc->tcfg->inject_ix) > operation->tfrm_op.outlen) || (tc->produced && (operat… in create_input_descriptors()
545 DEBUG_API(printk("create_input_descriptors: operation outdata too small\n")); in create_input_descriptors()
549 …while ((outiov_ix < operation->tfrm_op.outcount) && ((out_ix + operation->tfrm_op.outdata[outiov_i… in create_input_descriptors()
550 out_ix += operation->tfrm_op.outdata[outiov_ix].iov_len; in create_input_descriptors()
553 if (outiov_ix >= operation->tfrm_op.outcount){ in create_input_descriptors()
554 DEBUG_API(printk("create_input_descriptors: operation outdata too small\n")); in create_input_descriptors()
561 while ((out_length > 0) && (outiov_ix < operation->tfrm_op.outcount)) { in create_input_descriptors()
569 rem_length = operation->tfrm_op.outdata[outiov_ix].iov_len - iov_offset; in create_input_descriptors()
576 …outiov_ix, rem_length, dlength, iov_offset, operation->tfrm_op.outdata[outiov_ix].iov_len, operati… in create_input_descriptors()
578 …outdesc->dma_descr->buf = (char*)virt_to_phys(operation->tfrm_op.outdata[outiov_ix].iov_base + iov… in create_input_descriptors()
584 if (iov_offset >= operation->tfrm_op.outdata[outiov_ix].iov_len) { in create_input_descriptors()
611 static int create_output_descriptors(struct cryptocop_operation *operation, int *iniov_ix, int *ini… in create_output_descriptors() argument
615 …int rem_length = operation->tfrm_op.indata[*iniov_ix].iov_len - *iniov_offs… in create_output_descriptors()
628 …cdesc->dma_descr->buf = (char*)virt_to_phys(operation->tfrm_op.indata[*iniov_ix].iov_base + *iniov… in create_output_descriptors()
634 if (*iniov_offset >= operation->tfrm_op.indata[*iniov_ix].iov_len) { in create_output_descriptors()
637 if (*iniov_ix > operation->tfrm_op.incount) { in create_output_descriptors()
638 DEBUG_API(printk("create_output_descriptors: not enough indata in operation.")); in create_output_descriptors()
651 static int append_input_descriptors(struct cryptocop_operation *operation, struct cryptocop_dma_des… in append_input_descriptors() argument
690 failed = create_input_descriptors(operation, tc, &idescs, alloc_flag); in append_input_descriptors()
708 static int cryptocop_setup_dma_list(struct cryptocop_operation *operation, struct cryptocop_int_ope… in cryptocop_setup_dma_list() argument
772 struct cryptocop_tfrm_cfg *tcfg = operation->tfrm_op.tfrm_cfg; in cryptocop_setup_dma_list()
780 /* Operation descriptor cfg traversal pointer. */ in cryptocop_setup_dma_list()
794 assert(operation != NULL); in cryptocop_setup_dma_list()
798 DEBUG(print_cryptocop_operation(operation)); in cryptocop_setup_dma_list()
800 sess = get_session(operation->sid); in cryptocop_setup_dma_list()
802 DEBUG_API(printk("cryptocop_setup_dma_list: no session found for operation.\n")); in cryptocop_setup_dma_list()
817 (*int_op)->sid = operation->sid; in cryptocop_setup_dma_list()
825 /* Scan operation->tfrm_op.tfrm_cfg for bad configuration and set up the local contexts. */ in cryptocop_setup_dma_list()
827 DEBUG_API(printk("cryptocop_setup_dma_list: no configured transforms in operation.\n")); in cryptocop_setup_dma_list()
838 if (tcfg->inject_ix > operation->tfrm_op.outlen){ in cryptocop_setup_dma_list()
839 …ma_list: transform id %d inject_ix (%d) > operation->tfrm_op.outlen(%d)", tcfg->tid, tcfg->inject_… in cryptocop_setup_dma_list()
846 DEBUG_API(printk("cryptocop_setup_dma_list: multiple ciphers in operation.\n")); in cryptocop_setup_dma_list()
864 DEBUG_API(printk("cryptocop_setup_dma_list: multiple ciphers in operation.\n")); in cryptocop_setup_dma_list()
911 DEBUG_API(printk("cryptocop_setup_dma_list: multiple digests in operation.\n")); in cryptocop_setup_dma_list()
936 DEBUG_API(printk("cryptocop_setup_dma_list: multiple checksums in operation.\n")); in cryptocop_setup_dma_list()
983 odsc = operation->tfrm_op.desc; in cryptocop_setup_dma_list()
992 DEBUG(printk("cryptocop_setup_dma_list: parsing an operation descriptor\n")); in cryptocop_setup_dma_list()
997 DEBUG(printk("cryptocop_setup_dma_list: parsing an operation descriptor configuration.\n")); in cryptocop_setup_dma_list()
1088 DEBUG(printk("cryptocop_setup_dma_list: parsing operation descriptor configuration complete.\n")); in cryptocop_setup_dma_list()
1201 …failed = create_output_descriptors(operation, &iniov_ix, &iniov_offset, desc_len, &current_out_cde… in cryptocop_setup_dma_list()
1213 /* This means that the bulk operation (cipeher/m2m) is terminated. */ in cryptocop_setup_dma_list()
1259 DEBUG(printk("cryptocop_setup_dma_list: done parsing operation descriptors\n")); in cryptocop_setup_dma_list()
1261 DEBUG_API(printk("cryptocop_setup_dma_list: cipher operation not terminated.\n")); in cryptocop_setup_dma_list()
1266 DEBUG_API(printk("cryptocop_setup_dma_list: digest operation not terminated.\n")); in cryptocop_setup_dma_list()
1271 DEBUG_API(printk("cryptocop_setup_dma_list: csum operation not terminated.\n")); in cryptocop_setup_dma_list()
1276 …failed = append_input_descriptors(operation, &current_in_cdesc, &current_out_cdesc, &cipher_ctx, a… in cryptocop_setup_dma_list()
1281 …failed = append_input_descriptors(operation, &current_in_cdesc, &current_out_cdesc, &digest_ctx, a… in cryptocop_setup_dma_list()
1286 …failed = append_input_descriptors(operation, &current_in_cdesc, &current_out_cdesc, &csum_ctx, all… in cryptocop_setup_dma_list()
1818 /**** Job/operation management. ****/
1820 int cryptocop_job_queue_insert_csum(struct cryptocop_operation *operation) in cryptocop_job_queue_insert_csum() argument
1822 return cryptocop_job_queue_insert(cryptocop_prio_kernel_csum, operation); in cryptocop_job_queue_insert_csum()
1825 int cryptocop_job_queue_insert_crypto(struct cryptocop_operation *operation) in cryptocop_job_queue_insert_crypto() argument
1827 return cryptocop_job_queue_insert(cryptocop_prio_kernel, operation); in cryptocop_job_queue_insert_crypto()
1830 int cryptocop_job_queue_insert_user_job(struct cryptocop_operation *operation) in cryptocop_job_queue_insert_user_job() argument
1832 return cryptocop_job_queue_insert(cryptocop_prio_user, operation); in cryptocop_job_queue_insert_user_job()
1835 …nt cryptocop_job_queue_insert(cryptocop_queue_priority prio, struct cryptocop_operation *operation) in cryptocop_job_queue_insert() argument
1841 DEBUG(printk("cryptocop_job_queue_insert(%d, 0x%p)\n", prio, operation)); in cryptocop_job_queue_insert()
1843 if (!operation || !operation->cb){ in cryptocop_job_queue_insert()
1844 …DEBUG_API(printk("cryptocop_job_queue_insert oper=0x%p, NULL operation or callback\n", operation)); in cryptocop_job_queue_insert()
1848 if ((ret = cryptocop_job_setup(&pj, operation)) != 0){ in cryptocop_job_queue_insert()
1887 /* Notify consumer of operation completeness. */ in cryptocop_do_tasklet()
1932 /* This operation wants callback from interrupt. */ in dma_done_interrupt()
2053 /* Stop strcop from getting an operation to process while we are closing the in cryptocop_job_queue_close()
2244 …atic int cryptocop_job_setup(struct cryptocop_prio_job **pj, struct cryptocop_operation *operation) in cryptocop_job_setup() argument
2247 int alloc_flag = operation->in_interrupt ? GFP_ATOMIC : GFP_KERNEL; in cryptocop_job_setup()
2253 DEBUG(printk("cryptocop_job_setup: operation=0x%p\n", operation)); in cryptocop_job_setup()
2255 (*pj)->oper = operation; in cryptocop_job_setup()
2258 if (operation->use_dmalists) { in cryptocop_job_setup()
2259 DEBUG(print_user_dma_lists(&operation->list_op)); in cryptocop_job_setup()
2260 …if (!operation->list_op.inlist || !operation->list_op.outlist || !operation->list_op.out_data_buf … in cryptocop_job_setup()
2274 (*pj)->iop->sid = operation->sid; in cryptocop_job_setup()
2277 (*pj)->iop->tdes_mode = operation->list_op.tdes_mode; in cryptocop_job_setup()
2278 (*pj)->iop->csum_mode = operation->list_op.csum_mode; in cryptocop_job_setup()
2279 (*pj)->iop->ddesc_out = operation->list_op.outlist; in cryptocop_job_setup()
2280 (*pj)->iop->ddesc_in = operation->list_op.inlist; in cryptocop_job_setup()
2285 (*pj)->iop->ctx_out.saved_data = operation->list_op.outlist; in cryptocop_job_setup()
2286 (*pj)->iop->ctx_out.saved_data_buf = operation->list_op.out_data_buf; in cryptocop_job_setup()
2290 (*pj)->iop->ctx_in.saved_data = operation->list_op.inlist; in cryptocop_job_setup()
2291 (*pj)->iop->ctx_in.saved_data_buf = operation->list_op.in_data_buf; in cryptocop_job_setup()
2293 if ((err = cryptocop_setup_dma_list(operation, &(*pj)->iop, alloc_flag))) { in cryptocop_job_setup()
2699 /* Map user pages for in and out data of the operation. */ in cryptocop_ioctl_process()