• Home
  • Raw
  • Download

Lines Matching refs:rspq

311 static void bfa_msgq_rspq_dbell(struct bfa_msgq_rspq *rspq);
322 bfa_fsm_state_decl(rspq, stopped, struct bfa_msgq_rspq, enum rspq_event);
323 bfa_fsm_state_decl(rspq, init_wait, struct bfa_msgq_rspq,
325 bfa_fsm_state_decl(rspq, ready, struct bfa_msgq_rspq, enum rspq_event);
326 bfa_fsm_state_decl(rspq, dbell_wait, struct bfa_msgq_rspq,
330 rspq_sm_stopped_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_stopped_entry() argument
332 rspq->producer_index = 0; in rspq_sm_stopped_entry()
333 rspq->consumer_index = 0; in rspq_sm_stopped_entry()
334 rspq->flags = 0; in rspq_sm_stopped_entry()
338 rspq_sm_stopped(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_stopped() argument
342 bfa_fsm_set_state(rspq, rspq_sm_init_wait); in rspq_sm_stopped()
356 rspq_sm_init_wait_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_init_wait_entry() argument
358 bfa_wc_down(&rspq->msgq->init_wc); in rspq_sm_init_wait_entry()
362 rspq_sm_init_wait(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_init_wait() argument
367 bfa_fsm_set_state(rspq, rspq_sm_stopped); in rspq_sm_init_wait()
371 bfa_fsm_set_state(rspq, rspq_sm_ready); in rspq_sm_init_wait()
380 rspq_sm_ready_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_ready_entry() argument
385 rspq_sm_ready(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_ready() argument
390 bfa_fsm_set_state(rspq, rspq_sm_stopped); in rspq_sm_ready()
394 bfa_fsm_set_state(rspq, rspq_sm_dbell_wait); in rspq_sm_ready()
403 rspq_sm_dbell_wait_entry(struct bfa_msgq_rspq *rspq) in rspq_sm_dbell_wait_entry() argument
405 if (!bfa_nw_ioc_is_disabled(rspq->msgq->ioc)) in rspq_sm_dbell_wait_entry()
406 bfa_msgq_rspq_dbell(rspq); in rspq_sm_dbell_wait_entry()
410 rspq_sm_dbell_wait(struct bfa_msgq_rspq *rspq, enum rspq_event event) in rspq_sm_dbell_wait() argument
415 bfa_fsm_set_state(rspq, rspq_sm_stopped); in rspq_sm_dbell_wait()
419 rspq->flags |= BFA_MSGQ_RSPQ_F_DB_UPDATE; in rspq_sm_dbell_wait()
423 if (rspq->flags & BFA_MSGQ_RSPQ_F_DB_UPDATE) { in rspq_sm_dbell_wait()
424 rspq->flags &= ~BFA_MSGQ_RSPQ_F_DB_UPDATE; in rspq_sm_dbell_wait()
425 bfa_fsm_set_state(rspq, rspq_sm_dbell_wait); in rspq_sm_dbell_wait()
427 bfa_fsm_set_state(rspq, rspq_sm_ready); in rspq_sm_dbell_wait()
438 struct bfa_msgq_rspq *rspq = (struct bfa_msgq_rspq *)arg; in bfa_msgq_rspq_dbell_ready() local
439 bfa_fsm_send_event(rspq, RSPQ_E_DB_READY); in bfa_msgq_rspq_dbell_ready()
443 bfa_msgq_rspq_dbell(struct bfa_msgq_rspq *rspq) in bfa_msgq_rspq_dbell() argument
446 (struct bfi_msgq_h2i_db *)(&rspq->dbell_mb.msg[0]); in bfa_msgq_rspq_dbell()
451 dbell->idx.rspq_ci = htons(rspq->consumer_index); in bfa_msgq_rspq_dbell()
453 if (!bfa_nw_ioc_mbox_queue(rspq->msgq->ioc, &rspq->dbell_mb, in bfa_msgq_rspq_dbell()
454 bfa_msgq_rspq_dbell_ready, rspq)) { in bfa_msgq_rspq_dbell()
455 bfa_msgq_rspq_dbell_ready(rspq); in bfa_msgq_rspq_dbell()
460 bfa_msgq_rspq_pi_update(struct bfa_msgq_rspq *rspq, struct bfi_mbmsg *mb) in bfa_msgq_rspq_pi_update() argument
468 rspq->producer_index = ntohs(dbell->idx.rspq_pi); in bfa_msgq_rspq_pi_update()
470 while (rspq->consumer_index != rspq->producer_index) { in bfa_msgq_rspq_pi_update()
471 rspq_qe = (u8 *)rspq->addr.kva; in bfa_msgq_rspq_pi_update()
472 rspq_qe += (rspq->consumer_index * BFI_MSGQ_RSP_ENTRY_SIZE); in bfa_msgq_rspq_pi_update()
478 if ((mc >= BFI_MC_MAX) || (rspq->rsphdlr[mc].cbfn == NULL)) in bfa_msgq_rspq_pi_update()
481 (rspq->rsphdlr[mc].cbfn)(rspq->rsphdlr[mc].cbarg, msghdr); in bfa_msgq_rspq_pi_update()
483 BFA_MSGQ_INDX_ADD(rspq->consumer_index, num_entries, in bfa_msgq_rspq_pi_update()
484 rspq->depth); in bfa_msgq_rspq_pi_update()
487 bfa_fsm_send_event(rspq, RSPQ_E_RESP); in bfa_msgq_rspq_pi_update()
491 bfa_msgq_rspq_attach(struct bfa_msgq_rspq *rspq, struct bfa_msgq *msgq) in bfa_msgq_rspq_attach() argument
493 rspq->depth = BFA_MSGQ_RSPQ_NUM_ENTRY; in bfa_msgq_rspq_attach()
494 rspq->msgq = msgq; in bfa_msgq_rspq_attach()
495 bfa_fsm_set_state(rspq, rspq_sm_stopped); in bfa_msgq_rspq_attach()
503 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_INIT_RESP); in bfa_msgq_init_rsp()
519 bfa_dma_be_addr_set(msgq_cfg->rspq.addr, msgq->rspq.addr.pa); in bfa_msgq_init()
520 msgq_cfg->rspq.q_depth = htons(msgq->rspq.depth); in bfa_msgq_init()
536 bfa_msgq_rspq_pi_update(&msgq->rspq, msg); in bfa_msgq_isr()
563 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_START); in bfa_msgq_notify()
569 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_STOP); in bfa_msgq_notify()
574 bfa_fsm_send_event(&msgq->rspq, RSPQ_E_FAIL); in bfa_msgq_notify()
598 msgq->rspq.addr.kva = kva; in bfa_msgq_memclaim()
599 msgq->rspq.addr.pa = pa; in bfa_msgq_memclaim()
608 bfa_msgq_rspq_attach(&msgq->rspq, msgq); in bfa_msgq_attach()
619 msgq->rspq.rsphdlr[mc].cbfn = cbfn; in bfa_msgq_regisr()
620 msgq->rspq.rsphdlr[mc].cbarg = cbarg; in bfa_msgq_regisr()
639 struct bfa_msgq_rspq *rspq = &msgq->rspq; in bfa_msgq_rsp_copy() local
645 ci = rspq->consumer_index; in bfa_msgq_rsp_copy()
646 src = (u8 *)rspq->addr.kva; in bfa_msgq_rsp_copy()
656 BFA_MSGQ_INDX_ADD(ci, 1, rspq->depth); in bfa_msgq_rsp_copy()
657 src = (u8 *)rspq->addr.kva; in bfa_msgq_rsp_copy()