Lines Matching refs:comp_ctx
195 struct ena_comp_ctx *comp_ctx) in comp_ctxt_release() argument
197 comp_ctx->occupied = false; in comp_ctxt_release()
210 if (unlikely(queue->comp_ctx[command_id].occupied && capture)) { in get_comp_ctxt()
217 queue->comp_ctx[command_id].occupied = true; in get_comp_ctxt()
220 return &queue->comp_ctx[command_id]; in get_comp_ctxt()
229 struct ena_comp_ctx *comp_ctx; in __ena_com_submit_admin_cmd() local
254 comp_ctx = get_comp_ctxt(admin_queue, cmd_id, true); in __ena_com_submit_admin_cmd()
255 if (unlikely(!comp_ctx)) in __ena_com_submit_admin_cmd()
258 comp_ctx->status = ENA_CMD_SUBMITTED; in __ena_com_submit_admin_cmd()
259 comp_ctx->comp_size = (u32)comp_size_in_bytes; in __ena_com_submit_admin_cmd()
260 comp_ctx->user_cqe = comp; in __ena_com_submit_admin_cmd()
261 comp_ctx->cmd_opcode = cmd->aq_common_descriptor.opcode; in __ena_com_submit_admin_cmd()
263 reinit_completion(&comp_ctx->wait_event); in __ena_com_submit_admin_cmd()
278 return comp_ctx; in __ena_com_submit_admin_cmd()
284 struct ena_comp_ctx *comp_ctx; in ena_com_init_comp_ctxt() local
287 queue->comp_ctx = devm_kzalloc(queue->q_dmadev, size, GFP_KERNEL); in ena_com_init_comp_ctxt()
288 if (unlikely(!queue->comp_ctx)) { in ena_com_init_comp_ctxt()
294 comp_ctx = get_comp_ctxt(queue, i, false); in ena_com_init_comp_ctxt()
295 if (comp_ctx) in ena_com_init_comp_ctxt()
296 init_completion(&comp_ctx->wait_event); in ena_com_init_comp_ctxt()
309 struct ena_comp_ctx *comp_ctx; in ena_com_submit_admin_cmd() local
316 comp_ctx = __ena_com_submit_admin_cmd(admin_queue, cmd, in ena_com_submit_admin_cmd()
320 if (IS_ERR(comp_ctx)) in ena_com_submit_admin_cmd()
324 return comp_ctx; in ena_com_submit_admin_cmd()
426 struct ena_comp_ctx *comp_ctx; in ena_com_handle_single_admin_completion() local
432 comp_ctx = get_comp_ctxt(admin_queue, cmd_id, false); in ena_com_handle_single_admin_completion()
433 if (unlikely(!comp_ctx)) { in ena_com_handle_single_admin_completion()
439 comp_ctx->status = ENA_CMD_COMPLETED; in ena_com_handle_single_admin_completion()
440 comp_ctx->comp_status = cqe->acq_common_descriptor.status; in ena_com_handle_single_admin_completion()
442 if (comp_ctx->user_cqe) in ena_com_handle_single_admin_completion()
443 memcpy(comp_ctx->user_cqe, (void *)cqe, comp_ctx->comp_size); in ena_com_handle_single_admin_completion()
446 complete(&comp_ctx->wait_event); in ena_com_handle_single_admin_completion()
511 static int ena_com_wait_and_process_admin_cq_polling(struct ena_comp_ctx *comp_ctx, in ena_com_wait_and_process_admin_cq_polling() argument
524 if (comp_ctx->status != ENA_CMD_SUBMITTED) in ena_com_wait_and_process_admin_cq_polling()
542 if (unlikely(comp_ctx->status == ENA_CMD_ABORTED)) { in ena_com_wait_and_process_admin_cq_polling()
551 WARN(comp_ctx->status != ENA_CMD_COMPLETED, "Invalid comp status %d\n", in ena_com_wait_and_process_admin_cq_polling()
552 comp_ctx->status); in ena_com_wait_and_process_admin_cq_polling()
554 ret = ena_com_comp_status_to_errno(comp_ctx->comp_status); in ena_com_wait_and_process_admin_cq_polling()
556 comp_ctxt_release(admin_queue, comp_ctx); in ena_com_wait_and_process_admin_cq_polling()
560 static int ena_com_wait_and_process_admin_cq_interrupts(struct ena_comp_ctx *comp_ctx, in ena_com_wait_and_process_admin_cq_interrupts() argument
566 wait_for_completion_timeout(&comp_ctx->wait_event, in ena_com_wait_and_process_admin_cq_interrupts()
575 if (unlikely(comp_ctx->status == ENA_CMD_SUBMITTED)) { in ena_com_wait_and_process_admin_cq_interrupts()
581 if (comp_ctx->status == ENA_CMD_COMPLETED) in ena_com_wait_and_process_admin_cq_interrupts()
583 comp_ctx->cmd_opcode); in ena_com_wait_and_process_admin_cq_interrupts()
586 comp_ctx->cmd_opcode, comp_ctx->status); in ena_com_wait_and_process_admin_cq_interrupts()
593 ret = ena_com_comp_status_to_errno(comp_ctx->comp_status); in ena_com_wait_and_process_admin_cq_interrupts()
595 comp_ctxt_release(admin_queue, comp_ctx); in ena_com_wait_and_process_admin_cq_interrupts()
666 static int ena_com_wait_and_process_admin_cq(struct ena_comp_ctx *comp_ctx, in ena_com_wait_and_process_admin_cq() argument
670 return ena_com_wait_and_process_admin_cq_polling(comp_ctx, in ena_com_wait_and_process_admin_cq()
673 return ena_com_wait_and_process_admin_cq_interrupts(comp_ctx, in ena_com_wait_and_process_admin_cq()
1128 struct ena_comp_ctx *comp_ctx; in ena_com_execute_admin_command() local
1131 comp_ctx = ena_com_submit_admin_cmd(admin_queue, cmd, cmd_size, in ena_com_execute_admin_command()
1133 if (IS_ERR(comp_ctx)) { in ena_com_execute_admin_command()
1134 if (comp_ctx == ERR_PTR(-ENODEV)) in ena_com_execute_admin_command()
1136 PTR_ERR(comp_ctx)); in ena_com_execute_admin_command()
1139 PTR_ERR(comp_ctx)); in ena_com_execute_admin_command()
1141 return PTR_ERR(comp_ctx); in ena_com_execute_admin_command()
1144 ret = ena_com_wait_and_process_admin_cq(comp_ctx, admin_queue); in ena_com_execute_admin_command()
1231 struct ena_comp_ctx *comp_ctx; in ena_com_abort_admin_commands() local
1234 if (!admin_queue->comp_ctx) in ena_com_abort_admin_commands()
1238 comp_ctx = get_comp_ctxt(admin_queue, i, false); in ena_com_abort_admin_commands()
1239 if (unlikely(!comp_ctx)) in ena_com_abort_admin_commands()
1242 comp_ctx->status = ENA_CMD_ABORTED; in ena_com_abort_admin_commands()
1244 complete(&comp_ctx->wait_event); in ena_com_abort_admin_commands()
1439 if (admin_queue->comp_ctx) in ena_com_admin_destroy()
1440 devm_kfree(ena_dev->dmadev, admin_queue->comp_ctx); in ena_com_admin_destroy()
1441 admin_queue->comp_ctx = NULL; in ena_com_admin_destroy()