Lines Matching refs:comp_ctx

258 					struct efa_comp_ctx *comp_ctx)  in efa_com_put_comp_ctx()  argument
260 u16 cmd_id = EFA_GET(&comp_ctx->user_cqe->acq_common_descriptor.command, in efa_com_put_comp_ctx()
265 comp_ctx->occupied = 0; in efa_com_put_comp_ctx()
274 if (aq->comp_ctx[ctx_id].occupied && capture) { in efa_com_get_comp_ctx()
283 aq->comp_ctx[ctx_id].occupied = 1; in efa_com_get_comp_ctx()
288 return &aq->comp_ctx[ctx_id]; in efa_com_get_comp_ctx()
298 struct efa_comp_ctx *comp_ctx; in __efa_com_submit_admin_cmd() local
318 comp_ctx = efa_com_get_comp_ctx(aq, cmd_id, true); in __efa_com_submit_admin_cmd()
319 if (!comp_ctx) { in __efa_com_submit_admin_cmd()
324 comp_ctx->status = EFA_CMD_SUBMITTED; in __efa_com_submit_admin_cmd()
325 comp_ctx->comp_size = comp_size_in_bytes; in __efa_com_submit_admin_cmd()
326 comp_ctx->user_cqe = comp; in __efa_com_submit_admin_cmd()
327 comp_ctx->cmd_opcode = cmd->aq_common_descriptor.opcode; in __efa_com_submit_admin_cmd()
329 reinit_completion(&comp_ctx->wait_event); in __efa_com_submit_admin_cmd()
344 return comp_ctx; in __efa_com_submit_admin_cmd()
351 struct efa_comp_ctx *comp_ctx; in efa_com_init_comp_ctxt() local
354 aq->comp_ctx = devm_kzalloc(aq->dmadev, size, GFP_KERNEL); in efa_com_init_comp_ctxt()
356 if (!aq->comp_ctx || !aq->comp_ctx_pool) { in efa_com_init_comp_ctxt()
358 devm_kfree(aq->dmadev, aq->comp_ctx); in efa_com_init_comp_ctxt()
363 comp_ctx = efa_com_get_comp_ctx(aq, i, false); in efa_com_init_comp_ctxt()
364 if (comp_ctx) in efa_com_init_comp_ctxt()
365 init_completion(&comp_ctx->wait_event); in efa_com_init_comp_ctxt()
383 struct efa_comp_ctx *comp_ctx; in efa_com_submit_admin_cmd() local
392 comp_ctx = __efa_com_submit_admin_cmd(aq, cmd, cmd_size_in_bytes, comp, in efa_com_submit_admin_cmd()
395 if (IS_ERR(comp_ctx)) in efa_com_submit_admin_cmd()
398 return comp_ctx; in efa_com_submit_admin_cmd()
404 struct efa_comp_ctx *comp_ctx; in efa_com_handle_single_admin_completion() local
410 comp_ctx = efa_com_get_comp_ctx(aq, cmd_id, false); in efa_com_handle_single_admin_completion()
411 if (!comp_ctx) { in efa_com_handle_single_admin_completion()
418 comp_ctx->status = EFA_CMD_COMPLETED; in efa_com_handle_single_admin_completion()
419 memcpy(comp_ctx->user_cqe, cqe, comp_ctx->comp_size); in efa_com_handle_single_admin_completion()
422 complete(&comp_ctx->wait_event); in efa_com_handle_single_admin_completion()
485 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
499 if (comp_ctx->status != EFA_CMD_SUBMITTED) in efa_com_wait_and_process_admin_cq_polling()
517 err = efa_com_comp_status_to_errno(comp_ctx->user_cqe->acq_common_descriptor.status); in efa_com_wait_and_process_admin_cq_polling()
519 efa_com_put_comp_ctx(aq, comp_ctx); in efa_com_wait_and_process_admin_cq_polling()
523 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
529 wait_for_completion_timeout(&comp_ctx->wait_event, in efa_com_wait_and_process_admin_cq_interrupts()
538 if (comp_ctx->status == EFA_CMD_SUBMITTED) { in efa_com_wait_and_process_admin_cq_interrupts()
545 if (comp_ctx->status == EFA_CMD_COMPLETED) in efa_com_wait_and_process_admin_cq_interrupts()
549 efa_com_cmd_str(comp_ctx->cmd_opcode), in efa_com_wait_and_process_admin_cq_interrupts()
550 comp_ctx->cmd_opcode, comp_ctx->status, in efa_com_wait_and_process_admin_cq_interrupts()
551 comp_ctx, aq->sq.pc, aq->sq.cc, aq->cq.cc); 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()
565 err = efa_com_comp_status_to_errno(comp_ctx->user_cqe->acq_common_descriptor.status); in efa_com_wait_and_process_admin_cq_interrupts()
567 efa_com_put_comp_ctx(aq, comp_ctx); in efa_com_wait_and_process_admin_cq_interrupts()
579 static int efa_com_wait_and_process_admin_cq(struct efa_comp_ctx *comp_ctx, in efa_com_wait_and_process_admin_cq() argument
583 return efa_com_wait_and_process_admin_cq_polling(comp_ctx, aq); in efa_com_wait_and_process_admin_cq()
585 return efa_com_wait_and_process_admin_cq_interrupts(comp_ctx, aq); in efa_com_wait_and_process_admin_cq()
607 struct efa_comp_ctx *comp_ctx; in efa_com_cmd_exec() local
618 comp_ctx = efa_com_submit_admin_cmd(aq, cmd, cmd_size, comp, comp_size); in efa_com_cmd_exec()
619 if (IS_ERR(comp_ctx)) { in efa_com_cmd_exec()
624 cmd->aq_common_descriptor.opcode, PTR_ERR(comp_ctx)); in efa_com_cmd_exec()
628 return PTR_ERR(comp_ctx); in efa_com_cmd_exec()
631 err = efa_com_wait_and_process_admin_cq(comp_ctx, aq); in efa_com_cmd_exec()
638 comp_ctx->user_cqe->acq_common_descriptor.status, err); in efa_com_cmd_exec()
662 devm_kfree(edev->dmadev, aq->comp_ctx); in efa_com_admin_destroy()
779 devm_kfree(edev->dmadev, aq->comp_ctx); in efa_com_admin_init()