Lines Matching refs:rspq
318 static void bfa_msgq_rspq_dbell(struct bfa_msgq_rspq *rspq);
329 bfa_fsm_state_decl(rspq, stopped, struct bfa_msgq_rspq, enum rspq_event);
330 bfa_fsm_state_decl(rspq, init_wait, struct bfa_msgq_rspq,
332 bfa_fsm_state_decl(rspq, ready, struct bfa_msgq_rspq, enum rspq_event);
333 bfa_fsm_state_decl(rspq, dbell_wait, struct bfa_msgq_rspq,
337 rspq_sm_stopped_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_stopped_entry() argument
339 rspq->producer_index = 0; in rspq_sm_stopped_entry()
340 rspq->consumer_index = 0; in rspq_sm_stopped_entry()
341 rspq->flags = 0; in rspq_sm_stopped_entry()
345 rspq_sm_stopped(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_stopped() argument
349 bfa_fsm_set_state(rspq, rspq_sm_init_wait); in rspq_sm_stopped()
363 rspq_sm_init_wait_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_init_wait_entry() argument
365 bfa_wc_down(&rspq->msgq->init_wc); in rspq_sm_init_wait_entry()
369 rspq_sm_init_wait(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_init_wait() argument
374 bfa_fsm_set_state(rspq, rspq_sm_stopped); in rspq_sm_init_wait()
378 bfa_fsm_set_state(rspq, rspq_sm_ready); in rspq_sm_init_wait()
387 rspq_sm_ready_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_ready_entry() argument
392 rspq_sm_ready(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_ready() argument
397 bfa_fsm_set_state(rspq, rspq_sm_stopped); in rspq_sm_ready()
401 bfa_fsm_set_state(rspq, rspq_sm_dbell_wait); in rspq_sm_ready()
410 rspq_sm_dbell_wait_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_dbell_wait_entry() argument
412 if (!bfa_nw_ioc_is_disabled(rspq->msgq->ioc)) in rspq_sm_dbell_wait_entry()
413 bfa_msgq_rspq_dbell(rspq); in rspq_sm_dbell_wait_entry()
417 rspq_sm_dbell_wait(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_dbell_wait() argument
422 bfa_fsm_set_state(rspq, rspq_sm_stopped); in rspq_sm_dbell_wait()
426 rspq->flags |= BFA_MSGQ_RSPQ_F_DB_UPDATE; in rspq_sm_dbell_wait()
430 if (rspq->flags & BFA_MSGQ_RSPQ_F_DB_UPDATE) { in rspq_sm_dbell_wait()
431 rspq->flags &= ~BFA_MSGQ_RSPQ_F_DB_UPDATE; in rspq_sm_dbell_wait()
432 bfa_fsm_set_state(rspq, rspq_sm_dbell_wait); in rspq_sm_dbell_wait()
434 bfa_fsm_set_state(rspq, rspq_sm_ready); in rspq_sm_dbell_wait()
445 struct bfa_msgq_rspq *rspq = (struct bfa_msgq_rspq *)arg; in bfa_msgq_rspq_dbell_ready() local
446 bfa_fsm_send_event(rspq, RSPQ_E_DB_READY); in bfa_msgq_rspq_dbell_ready()
450 bfa_msgq_rspq_dbell(struct bfa_msgq_rspq *rspq) in bfa_msgq_rspq_dbell() argument
453 (struct bfi_msgq_h2i_db *)(&rspq->dbell_mb.msg[0]); in bfa_msgq_rspq_dbell()
458 dbell->idx.rspq_ci = htons(rspq->consumer_index); in bfa_msgq_rspq_dbell()
460 if (!bfa_nw_ioc_mbox_queue(rspq->msgq->ioc, &rspq->dbell_mb, in bfa_msgq_rspq_dbell()
461 bfa_msgq_rspq_dbell_ready, rspq)) { in bfa_msgq_rspq_dbell()
462 bfa_msgq_rspq_dbell_ready(rspq); in bfa_msgq_rspq_dbell()
467 bfa_msgq_rspq_pi_update(struct bfa_msgq_rspq *rspq, struct bfi_mbmsg *mb) in bfa_msgq_rspq_pi_update() argument
475 rspq->producer_index = ntohs(dbell->idx.rspq_pi); in bfa_msgq_rspq_pi_update()
477 while (rspq->consumer_index != rspq->producer_index) { in bfa_msgq_rspq_pi_update()
478 rspq_qe = (u8 *)rspq->addr.kva; in bfa_msgq_rspq_pi_update()
479 rspq_qe += (rspq->consumer_index * BFI_MSGQ_RSP_ENTRY_SIZE); in bfa_msgq_rspq_pi_update()
485 if ((mc >= BFI_MC_MAX) || (rspq->rsphdlr[mc].cbfn == NULL)) in bfa_msgq_rspq_pi_update()
488 (rspq->rsphdlr[mc].cbfn)(rspq->rsphdlr[mc].cbarg, msghdr); in bfa_msgq_rspq_pi_update()
490 BFA_MSGQ_INDX_ADD(rspq->consumer_index, num_entries, in bfa_msgq_rspq_pi_update()
491 rspq->depth); in bfa_msgq_rspq_pi_update()
494 bfa_fsm_send_event(rspq, RSPQ_E_RESP); in bfa_msgq_rspq_pi_update()
498 bfa_msgq_rspq_attach(struct bfa_msgq_rspq *rspq, struct bfa_msgq *msgq) in bfa_msgq_rspq_attach() argument
500 rspq->depth = BFA_MSGQ_RSPQ_NUM_ENTRY; in bfa_msgq_rspq_attach()
501 rspq->msgq = msgq; in bfa_msgq_rspq_attach()
502 bfa_fsm_set_state(rspq, rspq_sm_stopped); in bfa_msgq_rspq_attach()
510 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_INIT_RESP); in bfa_msgq_init_rsp()
526 bfa_dma_be_addr_set(msgq_cfg->rspq.addr, msgq->rspq.addr.pa); in bfa_msgq_init()
527 msgq_cfg->rspq.q_depth = htons(msgq->rspq.depth); in bfa_msgq_init()
543 bfa_msgq_rspq_pi_update(&msgq->rspq, msg); in bfa_msgq_isr()
570 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_START); in bfa_msgq_notify()
576 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_STOP); in bfa_msgq_notify()
581 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_FAIL); in bfa_msgq_notify()
605 msgq->rspq.addr.kva = kva; in bfa_msgq_memclaim()
606 msgq->rspq.addr.pa = pa; in bfa_msgq_memclaim()
615 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()