Lines Matching refs:rspq
319 static void bfa_msgq_rspq_dbell(struct bfa_msgq_rspq *rspq);
330 bfa_fsm_state_decl(rspq, stopped, struct bfa_msgq_rspq, enum rspq_event);
331 bfa_fsm_state_decl(rspq, init_wait, struct bfa_msgq_rspq,
333 bfa_fsm_state_decl(rspq, ready, struct bfa_msgq_rspq, enum rspq_event);
334 bfa_fsm_state_decl(rspq, dbell_wait, struct bfa_msgq_rspq,
338 rspq_sm_stopped_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_stopped_entry() argument
340 rspq->producer_index = 0; in rspq_sm_stopped_entry()
341 rspq->consumer_index = 0; in rspq_sm_stopped_entry()
342 rspq->flags = 0; in rspq_sm_stopped_entry()
346 rspq_sm_stopped(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_stopped() argument
350 bfa_fsm_set_state(rspq, rspq_sm_init_wait); in rspq_sm_stopped()
364 rspq_sm_init_wait_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_init_wait_entry() argument
366 bfa_wc_down(&rspq->msgq->init_wc); in rspq_sm_init_wait_entry()
370 rspq_sm_init_wait(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_init_wait() argument
375 bfa_fsm_set_state(rspq, rspq_sm_stopped); in rspq_sm_init_wait()
379 bfa_fsm_set_state(rspq, rspq_sm_ready); in rspq_sm_init_wait()
388 rspq_sm_ready_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_ready_entry() argument
393 rspq_sm_ready(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_ready() argument
398 bfa_fsm_set_state(rspq, rspq_sm_stopped); in rspq_sm_ready()
402 bfa_fsm_set_state(rspq, rspq_sm_dbell_wait); in rspq_sm_ready()
411 rspq_sm_dbell_wait_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_dbell_wait_entry() argument
413 if (!bfa_nw_ioc_is_disabled(rspq->msgq->ioc)) in rspq_sm_dbell_wait_entry()
414 bfa_msgq_rspq_dbell(rspq); in rspq_sm_dbell_wait_entry()
418 rspq_sm_dbell_wait(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_dbell_wait() argument
423 bfa_fsm_set_state(rspq, rspq_sm_stopped); in rspq_sm_dbell_wait()
427 rspq->flags |= BFA_MSGQ_RSPQ_F_DB_UPDATE; in rspq_sm_dbell_wait()
431 if (rspq->flags & BFA_MSGQ_RSPQ_F_DB_UPDATE) { in rspq_sm_dbell_wait()
432 rspq->flags &= ~BFA_MSGQ_RSPQ_F_DB_UPDATE; in rspq_sm_dbell_wait()
433 bfa_fsm_set_state(rspq, rspq_sm_dbell_wait); in rspq_sm_dbell_wait()
435 bfa_fsm_set_state(rspq, rspq_sm_ready); in rspq_sm_dbell_wait()
446 struct bfa_msgq_rspq *rspq = (struct bfa_msgq_rspq *)arg; in bfa_msgq_rspq_dbell_ready() local
447 bfa_fsm_send_event(rspq, RSPQ_E_DB_READY); in bfa_msgq_rspq_dbell_ready()
451 bfa_msgq_rspq_dbell(struct bfa_msgq_rspq *rspq) in bfa_msgq_rspq_dbell() argument
454 (struct bfi_msgq_h2i_db *)(&rspq->dbell_mb.msg[0]); in bfa_msgq_rspq_dbell()
459 dbell->idx.rspq_ci = htons(rspq->consumer_index); in bfa_msgq_rspq_dbell()
461 if (!bfa_nw_ioc_mbox_queue(rspq->msgq->ioc, &rspq->dbell_mb, in bfa_msgq_rspq_dbell()
462 bfa_msgq_rspq_dbell_ready, rspq)) { in bfa_msgq_rspq_dbell()
463 bfa_msgq_rspq_dbell_ready(rspq); in bfa_msgq_rspq_dbell()
468 bfa_msgq_rspq_pi_update(struct bfa_msgq_rspq *rspq, struct bfi_mbmsg *mb) in bfa_msgq_rspq_pi_update() argument
476 rspq->producer_index = ntohs(dbell->idx.rspq_pi); in bfa_msgq_rspq_pi_update()
478 while (rspq->consumer_index != rspq->producer_index) { in bfa_msgq_rspq_pi_update()
479 rspq_qe = (u8 *)rspq->addr.kva; in bfa_msgq_rspq_pi_update()
480 rspq_qe += (rspq->consumer_index * BFI_MSGQ_RSP_ENTRY_SIZE); in bfa_msgq_rspq_pi_update()
486 if ((mc >= BFI_MC_MAX) || (rspq->rsphdlr[mc].cbfn == NULL)) in bfa_msgq_rspq_pi_update()
489 (rspq->rsphdlr[mc].cbfn)(rspq->rsphdlr[mc].cbarg, msghdr); in bfa_msgq_rspq_pi_update()
491 BFA_MSGQ_INDX_ADD(rspq->consumer_index, num_entries, in bfa_msgq_rspq_pi_update()
492 rspq->depth); in bfa_msgq_rspq_pi_update()
495 bfa_fsm_send_event(rspq, RSPQ_E_RESP); in bfa_msgq_rspq_pi_update()
499 bfa_msgq_rspq_attach(struct bfa_msgq_rspq *rspq, struct bfa_msgq *msgq) in bfa_msgq_rspq_attach() argument
501 rspq->depth = BFA_MSGQ_RSPQ_NUM_ENTRY; in bfa_msgq_rspq_attach()
502 rspq->msgq = msgq; in bfa_msgq_rspq_attach()
503 bfa_fsm_set_state(rspq, rspq_sm_stopped); in bfa_msgq_rspq_attach()
511 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_INIT_RESP); in bfa_msgq_init_rsp()
527 bfa_dma_be_addr_set(msgq_cfg->rspq.addr, msgq->rspq.addr.pa); in bfa_msgq_init()
528 msgq_cfg->rspq.q_depth = htons(msgq->rspq.depth); in bfa_msgq_init()
544 bfa_msgq_rspq_pi_update(&msgq->rspq, msg); in bfa_msgq_isr()
571 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_START); in bfa_msgq_notify()
577 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_STOP); in bfa_msgq_notify()
582 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_FAIL); in bfa_msgq_notify()
606 msgq->rspq.addr.kva = kva; in bfa_msgq_memclaim()
607 msgq->rspq.addr.pa = pa; in bfa_msgq_memclaim()
616 bfa_msgq_rspq_attach(&msgq->rspq, msgq); in bfa_msgq_attach()
627 msgq->rspq.rsphdlr[mc].cbfn = cbfn; in bfa_msgq_regisr()
628 msgq->rspq.rsphdlr[mc].cbarg = cbarg; in bfa_msgq_regisr()
647 struct bfa_msgq_rspq *rspq = &msgq->rspq; in bfa_msgq_rsp_copy() local
653 ci = rspq->consumer_index; in bfa_msgq_rsp_copy()
654 src = (u8 *)rspq->addr.kva; in bfa_msgq_rsp_copy()
664 BFA_MSGQ_INDX_ADD(ci, 1, rspq->depth); in bfa_msgq_rsp_copy()
665 src = (u8 *)rspq->addr.kva; in bfa_msgq_rsp_copy()