Lines Matching refs:comp_ctx

175 				     struct ena_comp_ctx *comp_ctx)  in comp_ctxt_release()  argument
177 comp_ctx->occupied = false; in comp_ctxt_release()
191 if (unlikely(!admin_queue->comp_ctx)) { in get_comp_ctxt()
197 if (unlikely(admin_queue->comp_ctx[command_id].occupied && capture)) { in get_comp_ctxt()
205 admin_queue->comp_ctx[command_id].occupied = true; in get_comp_ctxt()
208 return &admin_queue->comp_ctx[command_id]; in get_comp_ctxt()
217 struct ena_comp_ctx *comp_ctx; in __ena_com_submit_admin_cmd() local
243 comp_ctx = get_comp_ctxt(admin_queue, cmd_id, true); in __ena_com_submit_admin_cmd()
244 if (unlikely(!comp_ctx)) in __ena_com_submit_admin_cmd()
247 comp_ctx->status = ENA_CMD_SUBMITTED; in __ena_com_submit_admin_cmd()
248 comp_ctx->comp_size = (u32)comp_size_in_bytes; in __ena_com_submit_admin_cmd()
249 comp_ctx->user_cqe = comp; in __ena_com_submit_admin_cmd()
250 comp_ctx->cmd_opcode = cmd->aq_common_descriptor.opcode; in __ena_com_submit_admin_cmd()
252 reinit_completion(&comp_ctx->wait_event); in __ena_com_submit_admin_cmd()
267 return comp_ctx; in __ena_com_submit_admin_cmd()
274 struct ena_comp_ctx *comp_ctx; in ena_com_init_comp_ctxt() local
277 admin_queue->comp_ctx = in ena_com_init_comp_ctxt()
279 if (unlikely(!admin_queue->comp_ctx)) { in ena_com_init_comp_ctxt()
285 comp_ctx = get_comp_ctxt(admin_queue, i, false); in ena_com_init_comp_ctxt()
286 if (comp_ctx) in ena_com_init_comp_ctxt()
287 init_completion(&comp_ctx->wait_event); in ena_com_init_comp_ctxt()
300 struct ena_comp_ctx *comp_ctx; in ena_com_submit_admin_cmd() local
307 comp_ctx = __ena_com_submit_admin_cmd(admin_queue, cmd, in ena_com_submit_admin_cmd()
311 if (IS_ERR(comp_ctx)) in ena_com_submit_admin_cmd()
315 return comp_ctx; in ena_com_submit_admin_cmd()
452 struct ena_comp_ctx *comp_ctx; in ena_com_handle_single_admin_completion() local
458 comp_ctx = get_comp_ctxt(admin_queue, cmd_id, false); in ena_com_handle_single_admin_completion()
459 if (unlikely(!comp_ctx)) { in ena_com_handle_single_admin_completion()
466 comp_ctx->status = ENA_CMD_COMPLETED; in ena_com_handle_single_admin_completion()
467 comp_ctx->comp_status = cqe->acq_common_descriptor.status; in ena_com_handle_single_admin_completion()
469 if (comp_ctx->user_cqe) in ena_com_handle_single_admin_completion()
470 memcpy(comp_ctx->user_cqe, (void *)cqe, comp_ctx->comp_size); in ena_com_handle_single_admin_completion()
473 complete(&comp_ctx->wait_event); in ena_com_handle_single_admin_completion()
547 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
562 if (comp_ctx->status != ENA_CMD_SUBMITTED) in ena_com_wait_and_process_admin_cq_polling()
582 if (unlikely(comp_ctx->status == ENA_CMD_ABORTED)) { in ena_com_wait_and_process_admin_cq_polling()
592 WARN(comp_ctx->status != ENA_CMD_COMPLETED, "Invalid comp status %d\n", in ena_com_wait_and_process_admin_cq_polling()
593 comp_ctx->status); in ena_com_wait_and_process_admin_cq_polling()
595 ret = ena_com_comp_status_to_errno(admin_queue, comp_ctx->comp_status); in ena_com_wait_and_process_admin_cq_polling()
597 comp_ctxt_release(admin_queue, comp_ctx); in ena_com_wait_and_process_admin_cq_polling()
776 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
782 wait_for_completion_timeout(&comp_ctx->wait_event, in ena_com_wait_and_process_admin_cq_interrupts()
791 if (unlikely(comp_ctx->status == ENA_CMD_SUBMITTED)) { in ena_com_wait_and_process_admin_cq_interrupts()
797 if (comp_ctx->status == ENA_CMD_COMPLETED) { in ena_com_wait_and_process_admin_cq_interrupts()
800 comp_ctx->cmd_opcode, in ena_com_wait_and_process_admin_cq_interrupts()
808 comp_ctx->cmd_opcode, comp_ctx->status); in ena_com_wait_and_process_admin_cq_interrupts()
821 ret = ena_com_comp_status_to_errno(admin_queue, comp_ctx->comp_status); in ena_com_wait_and_process_admin_cq_interrupts()
823 comp_ctxt_release(admin_queue, comp_ctx); in ena_com_wait_and_process_admin_cq_interrupts()
896 static int ena_com_wait_and_process_admin_cq(struct ena_comp_ctx *comp_ctx, in ena_com_wait_and_process_admin_cq() argument
900 return ena_com_wait_and_process_admin_cq_polling(comp_ctx, in ena_com_wait_and_process_admin_cq()
903 return ena_com_wait_and_process_admin_cq_interrupts(comp_ctx, in ena_com_wait_and_process_admin_cq()
1360 struct ena_comp_ctx *comp_ctx; in ena_com_execute_admin_command() local
1363 comp_ctx = ena_com_submit_admin_cmd(admin_queue, cmd, cmd_size, in ena_com_execute_admin_command()
1365 if (IS_ERR(comp_ctx)) { in ena_com_execute_admin_command()
1366 ret = PTR_ERR(comp_ctx); in ena_com_execute_admin_command()
1377 ret = ena_com_wait_and_process_admin_cq(comp_ctx, admin_queue); in ena_com_execute_admin_command()
1469 struct ena_comp_ctx *comp_ctx; in ena_com_abort_admin_commands() local
1472 if (!admin_queue->comp_ctx) in ena_com_abort_admin_commands()
1476 comp_ctx = get_comp_ctxt(admin_queue, i, false); in ena_com_abort_admin_commands()
1477 if (unlikely(!comp_ctx)) in ena_com_abort_admin_commands()
1480 comp_ctx->status = ENA_CMD_ABORTED; in ena_com_abort_admin_commands()
1482 complete(&comp_ctx->wait_event); in ena_com_abort_admin_commands()
1677 if (!admin_queue->comp_ctx) in ena_com_free_ena_admin_queue_comp_ctx()
1680 devm_kfree(ena_dev->dmadev, admin_queue->comp_ctx); in ena_com_free_ena_admin_queue_comp_ctx()
1682 admin_queue->comp_ctx = NULL; in ena_com_free_ena_admin_queue_comp_ctx()