Lines Matching refs:comp_ctx

263 					struct efa_comp_ctx *comp_ctx)  in efa_com_put_comp_ctx()  argument
265 u16 cmd_id = EFA_GET(&comp_ctx->user_cqe->acq_common_descriptor.command, in efa_com_put_comp_ctx()
270 comp_ctx->occupied = 0; in efa_com_put_comp_ctx()
279 if (aq->comp_ctx[ctx_id].occupied && capture) { in efa_com_get_comp_ctx()
288 aq->comp_ctx[ctx_id].occupied = 1; in efa_com_get_comp_ctx()
293 return &aq->comp_ctx[ctx_id]; in efa_com_get_comp_ctx()
303 struct efa_comp_ctx *comp_ctx; in __efa_com_submit_admin_cmd() local
323 comp_ctx = efa_com_get_comp_ctx(aq, cmd_id, true); in __efa_com_submit_admin_cmd()
324 if (!comp_ctx) { in __efa_com_submit_admin_cmd()
329 comp_ctx->status = EFA_CMD_SUBMITTED; in __efa_com_submit_admin_cmd()
330 comp_ctx->comp_size = comp_size_in_bytes; in __efa_com_submit_admin_cmd()
331 comp_ctx->user_cqe = comp; in __efa_com_submit_admin_cmd()
332 comp_ctx->cmd_opcode = cmd->aq_common_descriptor.opcode; in __efa_com_submit_admin_cmd()
334 reinit_completion(&comp_ctx->wait_event); in __efa_com_submit_admin_cmd()
349 return comp_ctx; in __efa_com_submit_admin_cmd()
356 struct efa_comp_ctx *comp_ctx; in efa_com_init_comp_ctxt() local
359 aq->comp_ctx = devm_kzalloc(aq->dmadev, size, GFP_KERNEL); in efa_com_init_comp_ctxt()
361 if (!aq->comp_ctx || !aq->comp_ctx_pool) { in efa_com_init_comp_ctxt()
363 devm_kfree(aq->dmadev, aq->comp_ctx); in efa_com_init_comp_ctxt()
368 comp_ctx = efa_com_get_comp_ctx(aq, i, false); in efa_com_init_comp_ctxt()
369 if (comp_ctx) in efa_com_init_comp_ctxt()
370 init_completion(&comp_ctx->wait_event); in efa_com_init_comp_ctxt()
388 struct efa_comp_ctx *comp_ctx; in efa_com_submit_admin_cmd() local
397 comp_ctx = __efa_com_submit_admin_cmd(aq, cmd, cmd_size_in_bytes, comp, in efa_com_submit_admin_cmd()
400 if (IS_ERR(comp_ctx)) in efa_com_submit_admin_cmd()
403 return comp_ctx; in efa_com_submit_admin_cmd()
409 struct efa_comp_ctx *comp_ctx; in efa_com_handle_single_admin_completion() local
415 comp_ctx = efa_com_get_comp_ctx(aq, cmd_id, false); in efa_com_handle_single_admin_completion()
416 if (!comp_ctx) { in efa_com_handle_single_admin_completion()
423 comp_ctx->status = EFA_CMD_COMPLETED; in efa_com_handle_single_admin_completion()
424 comp_ctx->comp_status = cqe->acq_common_descriptor.status; in efa_com_handle_single_admin_completion()
425 if (comp_ctx->user_cqe) in efa_com_handle_single_admin_completion()
426 memcpy(comp_ctx->user_cqe, cqe, comp_ctx->comp_size); in efa_com_handle_single_admin_completion()
429 complete(&comp_ctx->wait_event); in efa_com_handle_single_admin_completion()
492 static int efa_com_wait_and_process_admin_cq_polling(struct efa_comp_ctx *comp_ctx, in efa_com_wait_and_process_admin_cq_polling() argument
506 if (comp_ctx->status != EFA_CMD_SUBMITTED) in efa_com_wait_and_process_admin_cq_polling()
524 err = efa_com_comp_status_to_errno(comp_ctx->comp_status); in efa_com_wait_and_process_admin_cq_polling()
526 efa_com_put_comp_ctx(aq, comp_ctx); in efa_com_wait_and_process_admin_cq_polling()
530 static int efa_com_wait_and_process_admin_cq_interrupts(struct efa_comp_ctx *comp_ctx, in efa_com_wait_and_process_admin_cq_interrupts() argument
536 wait_for_completion_timeout(&comp_ctx->wait_event, in efa_com_wait_and_process_admin_cq_interrupts()
545 if (comp_ctx->status == EFA_CMD_SUBMITTED) { in efa_com_wait_and_process_admin_cq_interrupts()
552 if (comp_ctx->status == EFA_CMD_COMPLETED) in efa_com_wait_and_process_admin_cq_interrupts()
556 efa_com_cmd_str(comp_ctx->cmd_opcode), in efa_com_wait_and_process_admin_cq_interrupts()
557 comp_ctx->cmd_opcode, comp_ctx->status, in efa_com_wait_and_process_admin_cq_interrupts()
558 comp_ctx, aq->sq.pc, aq->sq.cc, aq->cq.cc); in efa_com_wait_and_process_admin_cq_interrupts()
563 efa_com_cmd_str(comp_ctx->cmd_opcode), in efa_com_wait_and_process_admin_cq_interrupts()
564 comp_ctx->cmd_opcode, comp_ctx->status, in efa_com_wait_and_process_admin_cq_interrupts()
565 comp_ctx, aq->sq.pc, aq->sq.cc, aq->cq.cc); in efa_com_wait_and_process_admin_cq_interrupts()
572 err = efa_com_comp_status_to_errno(comp_ctx->comp_status); in efa_com_wait_and_process_admin_cq_interrupts()
574 efa_com_put_comp_ctx(aq, comp_ctx); in efa_com_wait_and_process_admin_cq_interrupts()
586 static int efa_com_wait_and_process_admin_cq(struct efa_comp_ctx *comp_ctx, in efa_com_wait_and_process_admin_cq() argument
590 return efa_com_wait_and_process_admin_cq_polling(comp_ctx, aq); in efa_com_wait_and_process_admin_cq()
592 return efa_com_wait_and_process_admin_cq_interrupts(comp_ctx, aq); in efa_com_wait_and_process_admin_cq()
614 struct efa_comp_ctx *comp_ctx; in efa_com_cmd_exec() local
625 comp_ctx = efa_com_submit_admin_cmd(aq, cmd, cmd_size, comp, comp_size); in efa_com_cmd_exec()
626 if (IS_ERR(comp_ctx)) { in efa_com_cmd_exec()
631 cmd->aq_common_descriptor.opcode, PTR_ERR(comp_ctx)); in efa_com_cmd_exec()
635 return PTR_ERR(comp_ctx); in efa_com_cmd_exec()
638 err = efa_com_wait_and_process_admin_cq(comp_ctx, aq); in efa_com_cmd_exec()
644 cmd->aq_common_descriptor.opcode, comp_ctx->comp_status, in efa_com_cmd_exec()
669 devm_kfree(edev->dmadev, aq->comp_ctx); in efa_com_admin_destroy()
786 devm_kfree(edev->dmadev, aq->comp_ctx); in efa_com_admin_init()