Lines Matching refs:pring
541 lpfc_cmd_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) in lpfc_cmd_iocb() argument
543 return (IOCB_t *) (((char *) pring->sli.sli3.cmdringaddr) + in lpfc_cmd_iocb()
544 pring->sli.sli3.cmdidx * phba->iocb_cmd_size); in lpfc_cmd_iocb()
558 lpfc_resp_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) in lpfc_resp_iocb() argument
560 return (IOCB_t *) (((char *) pring->sli.sli3.rspringaddr) + in lpfc_resp_iocb()
561 pring->sli.sli3.rspidx * phba->iocb_rsp_size); in lpfc_resp_iocb()
1004 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; in __lpfc_sli_release_iocbq_s4() local
1022 spin_lock_irqsave(&pring->ring_lock, iflag); in __lpfc_sli_release_iocbq_s4()
1027 spin_unlock_irqrestore(&pring->ring_lock, iflag); in __lpfc_sli_release_iocbq_s4()
1030 if (!list_empty(&pring->txq)) in __lpfc_sli_release_iocbq_s4()
1310 lpfc_sli_ringtxcmpl_put(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_ringtxcmpl_put() argument
1313 list_add_tail(&piocb->list, &pring->txcmplq); in lpfc_sli_ringtxcmpl_put()
1316 if ((unlikely(pring->ringno == LPFC_ELS_RING)) && in lpfc_sli_ringtxcmpl_put()
1343 lpfc_sli_ringtx_get(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) in lpfc_sli_ringtx_get() argument
1347 list_remove_head((&pring->txq), cmd_iocb, struct lpfc_iocbq, list); in lpfc_sli_ringtx_get()
1366 lpfc_sli_next_iocb_slot (struct lpfc_hba *phba, struct lpfc_sli_ring *pring) in lpfc_sli_next_iocb_slot() argument
1368 struct lpfc_pgp *pgp = &phba->port_gp[pring->ringno]; in lpfc_sli_next_iocb_slot()
1369 uint32_t max_cmd_idx = pring->sli.sli3.numCiocb; in lpfc_sli_next_iocb_slot()
1370 if ((pring->sli.sli3.next_cmdidx == pring->sli.sli3.cmdidx) && in lpfc_sli_next_iocb_slot()
1371 (++pring->sli.sli3.next_cmdidx >= max_cmd_idx)) in lpfc_sli_next_iocb_slot()
1372 pring->sli.sli3.next_cmdidx = 0; in lpfc_sli_next_iocb_slot()
1374 if (unlikely(pring->sli.sli3.local_getidx == in lpfc_sli_next_iocb_slot()
1375 pring->sli.sli3.next_cmdidx)) { in lpfc_sli_next_iocb_slot()
1377 pring->sli.sli3.local_getidx = le32_to_cpu(pgp->cmdGetInx); in lpfc_sli_next_iocb_slot()
1379 if (unlikely(pring->sli.sli3.local_getidx >= max_cmd_idx)) { in lpfc_sli_next_iocb_slot()
1383 pring->ringno, in lpfc_sli_next_iocb_slot()
1384 pring->sli.sli3.local_getidx, in lpfc_sli_next_iocb_slot()
1400 if (pring->sli.sli3.local_getidx == pring->sli.sli3.next_cmdidx) in lpfc_sli_next_iocb_slot()
1404 return lpfc_cmd_iocb(phba, pring); in lpfc_sli_next_iocb_slot()
1497 lpfc_sli_submit_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_submit_iocb() argument
1506 if (pring->ringno == LPFC_ELS_RING) { in lpfc_sli_submit_iocb()
1519 pring->stats.iocb_cmd++; in lpfc_sli_submit_iocb()
1527 lpfc_sli_ringtxcmpl_put(phba, pring, nextiocb); in lpfc_sli_submit_iocb()
1535 pring->sli.sli3.cmdidx = pring->sli.sli3.next_cmdidx; in lpfc_sli_submit_iocb()
1536 writel(pring->sli.sli3.cmdidx, &phba->host_gp[pring->ringno].cmdPutInx); in lpfc_sli_submit_iocb()
1552 lpfc_sli_update_full_ring(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) in lpfc_sli_update_full_ring() argument
1554 int ringno = pring->ringno; in lpfc_sli_update_full_ring()
1556 pring->flag |= LPFC_CALL_RING_AVAILABLE; in lpfc_sli_update_full_ring()
1567 pring->stats.iocb_cmd_full++; in lpfc_sli_update_full_ring()
1580 lpfc_sli_update_ring(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) in lpfc_sli_update_ring() argument
1582 int ringno = pring->ringno; in lpfc_sli_update_ring()
1604 lpfc_sli_resume_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) in lpfc_sli_resume_iocb() argument
1618 (!list_empty(&pring->txq)) && in lpfc_sli_resume_iocb()
1619 (pring->ringno != phba->sli.fcp_ring || in lpfc_sli_resume_iocb()
1622 while ((iocb = lpfc_sli_next_iocb_slot(phba, pring)) && in lpfc_sli_resume_iocb()
1623 (nextiocb = lpfc_sli_ringtx_get(phba, pring))) in lpfc_sli_resume_iocb()
1624 lpfc_sli_submit_iocb(phba, pring, iocb, nextiocb); in lpfc_sli_resume_iocb()
1627 lpfc_sli_update_ring(phba, pring); in lpfc_sli_resume_iocb()
1629 lpfc_sli_update_full_ring(phba, pring); in lpfc_sli_resume_iocb()
2406 struct lpfc_sli_ring *pring, in lpfc_sli_get_buff() argument
2412 return lpfc_sli_ring_taggedbuf_get(phba, pring, tag); in lpfc_sli_get_buff()
2432 lpfc_complete_unsol_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_complete_unsol_iocb() argument
2439 if (pring->prt[0].profile) { in lpfc_complete_unsol_iocb()
2440 if (pring->prt[0].lpfc_sli_rcv_unsol_event) in lpfc_complete_unsol_iocb()
2441 (pring->prt[0].lpfc_sli_rcv_unsol_event) (phba, pring, in lpfc_complete_unsol_iocb()
2447 for (i = 0; i < pring->num_mask; i++) { in lpfc_complete_unsol_iocb()
2448 if ((pring->prt[i].rctl == fch_r_ctl) && in lpfc_complete_unsol_iocb()
2449 (pring->prt[i].type == fch_type)) { in lpfc_complete_unsol_iocb()
2450 if (pring->prt[i].lpfc_sli_rcv_unsol_event) in lpfc_complete_unsol_iocb()
2451 (pring->prt[i].lpfc_sli_rcv_unsol_event) in lpfc_complete_unsol_iocb()
2452 (phba, pring, saveq); in lpfc_complete_unsol_iocb()
2474 lpfc_sli_process_unsol_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_process_unsol_iocb() argument
2486 if (pring->lpfc_sli_rcv_async_status) in lpfc_sli_process_unsol_iocb()
2487 pring->lpfc_sli_rcv_async_status(phba, pring, saveq); in lpfc_sli_process_unsol_iocb()
2495 pring->ringno, in lpfc_sli_process_unsol_iocb()
2503 dmzbuf = lpfc_sli_get_buff(phba, pring, in lpfc_sli_process_unsol_iocb()
2509 dmzbuf = lpfc_sli_get_buff(phba, pring, in lpfc_sli_process_unsol_iocb()
2515 dmzbuf = lpfc_sli_get_buff(phba, pring, in lpfc_sli_process_unsol_iocb()
2525 saveq->context2 = lpfc_sli_get_buff(phba, pring, in lpfc_sli_process_unsol_iocb()
2533 pring->ringno, in lpfc_sli_process_unsol_iocb()
2537 saveq->context3 = lpfc_sli_get_buff(phba, pring, in lpfc_sli_process_unsol_iocb()
2545 pring->ringno, in lpfc_sli_process_unsol_iocb()
2551 iocbq->context2 = lpfc_sli_get_buff(phba, pring, in lpfc_sli_process_unsol_iocb()
2559 ". tag 0x%x\n", pring->ringno, in lpfc_sli_process_unsol_iocb()
2563 iocbq->context3 = lpfc_sli_get_buff(phba, pring, in lpfc_sli_process_unsol_iocb()
2572 pring->ringno, in lpfc_sli_process_unsol_iocb()
2583 list_for_each_entry(iocbq, &pring->iocb_continue_saveq, clist) { in lpfc_sli_process_unsol_iocb()
2593 &pring->iocb_continue_saveq); in lpfc_sli_process_unsol_iocb()
2612 if ((Rctl == 0) && (pring->ringno == LPFC_ELS_RING) && in lpfc_sli_process_unsol_iocb()
2622 if (!lpfc_complete_unsol_iocb(phba, pring, saveq, Rctl, Type)) in lpfc_sli_process_unsol_iocb()
2626 pring->ringno, Rctl, Type); in lpfc_sli_process_unsol_iocb()
2645 struct lpfc_sli_ring *pring, in lpfc_sli_iocbq_lookup() argument
2684 struct lpfc_sli_ring *pring, uint16_t iotag) in lpfc_sli_iocbq_lookup_by_tag() argument
2721 lpfc_sli_process_sol_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_process_sol_iocb() argument
2730 cmdiocbp = lpfc_sli_iocbq_lookup(phba, pring, saveq); in lpfc_sli_process_sol_iocb()
2740 (pring->ringno == LPFC_ELS_RING) && in lpfc_sli_process_sol_iocb()
2750 if (pring->ringno == LPFC_ELS_RING) { in lpfc_sli_process_sol_iocb()
2836 if (pring->ringno != LPFC_ELS_RING) { in lpfc_sli_process_sol_iocb()
2845 pring->ringno, in lpfc_sli_process_sol_iocb()
2868 lpfc_sli_rsp_pointers_error(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) in lpfc_sli_rsp_pointers_error() argument
2870 struct lpfc_pgp *pgp = &phba->port_gp[pring->ringno]; in lpfc_sli_rsp_pointers_error()
2878 pring->ringno, le32_to_cpu(pgp->rspPutInx), in lpfc_sli_rsp_pointers_error()
2879 pring->sli.sli3.numRiocb); in lpfc_sli_rsp_pointers_error()
2962 struct lpfc_sli_ring *pring, uint32_t mask) in lpfc_sli_handle_fast_ring_event() argument
2964 struct lpfc_pgp *pgp = &phba->port_gp[pring->ringno]; in lpfc_sli_handle_fast_ring_event()
2977 pring->stats.iocb_event++; in lpfc_sli_handle_fast_ring_event()
2983 portRspMax = pring->sli.sli3.numRiocb; in lpfc_sli_handle_fast_ring_event()
2986 lpfc_sli_rsp_pointers_error(phba, pring); in lpfc_sli_handle_fast_ring_event()
2997 while (pring->sli.sli3.rspidx != portRspPut) { in lpfc_sli_handle_fast_ring_event()
3003 entry = lpfc_resp_iocb(phba, pring); in lpfc_sli_handle_fast_ring_event()
3006 if (++pring->sli.sli3.rspidx >= portRspMax) in lpfc_sli_handle_fast_ring_event()
3007 pring->sli.sli3.rspidx = 0; in lpfc_sli_handle_fast_ring_event()
3016 pring->stats.iocb_rsp++; in lpfc_sli_handle_fast_ring_event()
3036 pring->ringno, in lpfc_sli_handle_fast_ring_event()
3063 cmdiocbq = lpfc_sli_iocbq_lookup(phba, pring, in lpfc_sli_handle_fast_ring_event()
3078 lpfc_sli_process_unsol_iocb(phba, pring, &rspiocbq); in lpfc_sli_handle_fast_ring_event()
3109 writel(pring->sli.sli3.rspidx, in lpfc_sli_handle_fast_ring_event()
3110 &phba->host_gp[pring->ringno].rspGetInx); in lpfc_sli_handle_fast_ring_event()
3112 if (pring->sli.sli3.rspidx == portRspPut) in lpfc_sli_handle_fast_ring_event()
3117 pring->stats.iocb_rsp_full++; in lpfc_sli_handle_fast_ring_event()
3118 status = ((CA_R0ATT | CA_R0RE_RSP) << (pring->ringno * 4)); in lpfc_sli_handle_fast_ring_event()
3122 if ((mask & HA_R0CE_RSP) && (pring->flag & LPFC_CALL_RING_AVAILABLE)) { in lpfc_sli_handle_fast_ring_event()
3123 pring->flag &= ~LPFC_CALL_RING_AVAILABLE; in lpfc_sli_handle_fast_ring_event()
3124 pring->stats.iocb_cmd_empty++; in lpfc_sli_handle_fast_ring_event()
3127 pring->sli.sli3.local_getidx = le32_to_cpu(pgp->cmdGetInx); in lpfc_sli_handle_fast_ring_event()
3128 lpfc_sli_resume_iocb(phba, pring); in lpfc_sli_handle_fast_ring_event()
3130 if ((pring->lpfc_sli_cmd_available)) in lpfc_sli_handle_fast_ring_event()
3131 (pring->lpfc_sli_cmd_available) (phba, pring); in lpfc_sli_handle_fast_ring_event()
3159 lpfc_sli_sp_handle_rspiocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_sp_handle_rspiocb() argument
3174 list_add_tail(&rspiocbp->list, &(pring->iocb_continueq)); in lpfc_sli_sp_handle_rspiocb()
3175 pring->iocb_continueq_cnt++; in lpfc_sli_sp_handle_rspiocb()
3185 saveq = list_get_first(&pring->iocb_continueq, in lpfc_sli_sp_handle_rspiocb()
3188 list_del_init(&pring->iocb_continueq); in lpfc_sli_sp_handle_rspiocb()
3189 pring->iocb_continueq_cnt = 0; in lpfc_sli_sp_handle_rspiocb()
3191 pring->stats.iocb_rsp++; in lpfc_sli_sp_handle_rspiocb()
3214 pring->ringno, in lpfc_sli_sp_handle_rspiocb()
3244 rc = lpfc_sli_process_sol_iocb(phba, pring, saveq); in lpfc_sli_sp_handle_rspiocb()
3250 rc = lpfc_sli_process_unsol_iocb(phba, pring, saveq); in lpfc_sli_sp_handle_rspiocb()
3259 cmdiocbp = lpfc_sli_iocbq_lookup(phba, pring, in lpfc_sli_sp_handle_rspiocb()
3324 struct lpfc_sli_ring *pring, uint32_t mask) in lpfc_sli_handle_slow_ring_event() argument
3326 phba->lpfc_sli_handle_slow_ring_event(phba, pring, mask); in lpfc_sli_handle_slow_ring_event()
3342 struct lpfc_sli_ring *pring, uint32_t mask) in lpfc_sli_handle_slow_ring_event_s3() argument
3352 pgp = &phba->port_gp[pring->ringno]; in lpfc_sli_handle_slow_ring_event_s3()
3354 pring->stats.iocb_event++; in lpfc_sli_handle_slow_ring_event_s3()
3360 portRspMax = pring->sli.sli3.numRiocb; in lpfc_sli_handle_slow_ring_event_s3()
3370 pring->ringno, portRspPut, portRspMax); in lpfc_sli_handle_slow_ring_event_s3()
3382 while (pring->sli.sli3.rspidx != portRspPut) { in lpfc_sli_handle_slow_ring_event_s3()
3396 entry = lpfc_resp_iocb(phba, pring); in lpfc_sli_handle_slow_ring_event_s3()
3410 if (++pring->sli.sli3.rspidx >= portRspMax) in lpfc_sli_handle_slow_ring_event_s3()
3411 pring->sli.sli3.rspidx = 0; in lpfc_sli_handle_slow_ring_event_s3()
3413 if (pring->ringno == LPFC_ELS_RING) { in lpfc_sli_handle_slow_ring_event_s3()
3421 writel(pring->sli.sli3.rspidx, in lpfc_sli_handle_slow_ring_event_s3()
3422 &phba->host_gp[pring->ringno].rspGetInx); in lpfc_sli_handle_slow_ring_event_s3()
3426 rspiocbp = lpfc_sli_sp_handle_rspiocb(phba, pring, rspiocbp); in lpfc_sli_handle_slow_ring_event_s3()
3434 if (pring->sli.sli3.rspidx == portRspPut) { in lpfc_sli_handle_slow_ring_event_s3()
3441 pring->stats.iocb_rsp_full++; in lpfc_sli_handle_slow_ring_event_s3()
3443 status = ((CA_R0ATT | CA_R0RE_RSP) << (pring->ringno * 4)); in lpfc_sli_handle_slow_ring_event_s3()
3447 if ((mask & HA_R0CE_RSP) && (pring->flag & LPFC_CALL_RING_AVAILABLE)) { in lpfc_sli_handle_slow_ring_event_s3()
3448 pring->flag &= ~LPFC_CALL_RING_AVAILABLE; in lpfc_sli_handle_slow_ring_event_s3()
3449 pring->stats.iocb_cmd_empty++; in lpfc_sli_handle_slow_ring_event_s3()
3452 pring->sli.sli3.local_getidx = le32_to_cpu(pgp->cmdGetInx); in lpfc_sli_handle_slow_ring_event_s3()
3453 lpfc_sli_resume_iocb(phba, pring); in lpfc_sli_handle_slow_ring_event_s3()
3455 if ((pring->lpfc_sli_cmd_available)) in lpfc_sli_handle_slow_ring_event_s3()
3456 (pring->lpfc_sli_cmd_available) (phba, pring); in lpfc_sli_handle_slow_ring_event_s3()
3478 struct lpfc_sli_ring *pring, uint32_t mask) in lpfc_sli_handle_slow_ring_event_s4() argument
3503 lpfc_sli_sp_handle_rspiocb(phba, pring, in lpfc_sli_handle_slow_ring_event_s4()
3529 lpfc_sli_abort_iocb_ring(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) in lpfc_sli_abort_iocb_ring() argument
3534 if (pring->ringno == LPFC_ELS_RING) { in lpfc_sli_abort_iocb_ring()
3542 spin_lock_irq(&pring->ring_lock); in lpfc_sli_abort_iocb_ring()
3543 list_splice_init(&pring->txq, &completions); in lpfc_sli_abort_iocb_ring()
3544 pring->txq_cnt = 0; in lpfc_sli_abort_iocb_ring()
3545 spin_unlock_irq(&pring->ring_lock); in lpfc_sli_abort_iocb_ring()
3549 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) in lpfc_sli_abort_iocb_ring()
3550 lpfc_sli_issue_abort_iotag(phba, pring, iocb); in lpfc_sli_abort_iocb_ring()
3554 list_splice_init(&pring->txq, &completions); in lpfc_sli_abort_iocb_ring()
3555 pring->txq_cnt = 0; in lpfc_sli_abort_iocb_ring()
3558 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) in lpfc_sli_abort_iocb_ring()
3559 lpfc_sli_issue_abort_iotag(phba, pring, iocb); in lpfc_sli_abort_iocb_ring()
3582 struct lpfc_sli_ring *pring; in lpfc_sli_abort_fcp_rings() local
3588 pring = &psli->ring[i + MAX_SLI3_CONFIGURED_RINGS]; in lpfc_sli_abort_fcp_rings()
3589 lpfc_sli_abort_iocb_ring(phba, pring); in lpfc_sli_abort_fcp_rings()
3592 pring = &psli->ring[psli->fcp_ring]; in lpfc_sli_abort_fcp_rings()
3593 lpfc_sli_abort_iocb_ring(phba, pring); in lpfc_sli_abort_fcp_rings()
3614 struct lpfc_sli_ring *pring; in lpfc_sli_flush_fcp_rings() local
3625 pring = &psli->ring[i + MAX_SLI3_CONFIGURED_RINGS]; in lpfc_sli_flush_fcp_rings()
3627 spin_lock_irq(&pring->ring_lock); in lpfc_sli_flush_fcp_rings()
3629 list_splice_init(&pring->txq, &txq); in lpfc_sli_flush_fcp_rings()
3631 list_splice_init(&pring->txcmplq, &txcmplq); in lpfc_sli_flush_fcp_rings()
3632 pring->txq_cnt = 0; in lpfc_sli_flush_fcp_rings()
3633 pring->txcmplq_cnt = 0; in lpfc_sli_flush_fcp_rings()
3634 spin_unlock_irq(&pring->ring_lock); in lpfc_sli_flush_fcp_rings()
3646 pring = &psli->ring[psli->fcp_ring]; in lpfc_sli_flush_fcp_rings()
3650 list_splice_init(&pring->txq, &txq); in lpfc_sli_flush_fcp_rings()
3652 list_splice_init(&pring->txcmplq, &txcmplq); in lpfc_sli_flush_fcp_rings()
3653 pring->txq_cnt = 0; in lpfc_sli_flush_fcp_rings()
3654 pring->txcmplq_cnt = 0; in lpfc_sli_flush_fcp_rings()
4001 struct lpfc_sli_ring *pring; in lpfc_sli_brdreset() local
4038 pring = &psli->ring[i]; in lpfc_sli_brdreset()
4039 pring->flag = 0; in lpfc_sli_brdreset()
4040 pring->sli.sli3.rspidx = 0; in lpfc_sli_brdreset()
4041 pring->sli.sli3.next_cmdidx = 0; in lpfc_sli_brdreset()
4042 pring->sli.sli3.local_getidx = 0; in lpfc_sli_brdreset()
4043 pring->sli.sli3.cmdidx = 0; in lpfc_sli_brdreset()
4044 pring->missbufcnt = 0; in lpfc_sli_brdreset()
6104 struct lpfc_sli_ring *pring; in lpfc_sli4_repost_els_sgl_list() local
6111 pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_sli4_repost_els_sgl_list()
6113 spin_lock(&pring->ring_lock); in lpfc_sli4_repost_els_sgl_list()
6115 spin_unlock(&pring->ring_lock); in lpfc_sli4_repost_els_sgl_list()
6217 spin_lock(&pring->ring_lock); in lpfc_sli4_repost_els_sgl_list()
6220 spin_unlock(&pring->ring_lock); in lpfc_sli4_repost_els_sgl_list()
7861 __lpfc_sli_ringtx_put(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in __lpfc_sli_ringtx_put() argument
7865 list_add_tail(&piocb->list, &pring->txq); in __lpfc_sli_ringtx_put()
7886 lpfc_sli_next_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_next_iocb() argument
7891 nextiocb = lpfc_sli_ringtx_get(phba, pring); in lpfc_sli_next_iocb()
7928 struct lpfc_sli_ring *pring = &phba->sli.ring[ring_number]; in __lpfc_sli_issue_iocb_s3() local
7960 if (unlikely(pring->flag & LPFC_STOP_IOCB_EVENT)) in __lpfc_sli_issue_iocb_s3()
8000 } else if (unlikely(pring->ringno == phba->sli.fcp_ring && in __lpfc_sli_issue_iocb_s3()
8005 while ((iocb = lpfc_sli_next_iocb_slot(phba, pring)) && in __lpfc_sli_issue_iocb_s3()
8006 (nextiocb = lpfc_sli_next_iocb(phba, pring, &piocb))) in __lpfc_sli_issue_iocb_s3()
8007 lpfc_sli_submit_iocb(phba, pring, iocb, nextiocb); in __lpfc_sli_issue_iocb_s3()
8010 lpfc_sli_update_ring(phba, pring); in __lpfc_sli_issue_iocb_s3()
8012 lpfc_sli_update_full_ring(phba, pring); in __lpfc_sli_issue_iocb_s3()
8020 pring->stats.iocb_cmd_delay++; in __lpfc_sli_issue_iocb_s3()
8025 __lpfc_sli_ringtx_put(phba, pring, piocb); in __lpfc_sli_issue_iocb_s3()
8673 struct lpfc_sli_ring *pring = &phba->sli.ring[ring_number]; in __lpfc_sli_issue_iocb_s4() local
8680 if (!list_empty(&pring->txq)) { in __lpfc_sli_issue_iocb_s4()
8683 pring, piocb); in __lpfc_sli_issue_iocb_s4()
8693 pring, in __lpfc_sli_issue_iocb_s4()
8739 lpfc_sli_ringtxcmpl_put(phba, pring, piocb); in __lpfc_sli_issue_iocb_s4()
8844 struct lpfc_sli_ring *pring; in lpfc_sli_issue_iocb() local
8856 pring = &phba->sli.ring[ring_number]; in lpfc_sli_issue_iocb()
8857 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_sli_issue_iocb()
8859 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_sli_issue_iocb()
8912 struct lpfc_sli_ring *pring; in lpfc_extra_ring_setup() local
8919 pring = &psli->ring[psli->fcp_ring]; in lpfc_extra_ring_setup()
8920 pring->sli.sli3.numCiocb -= SLI2_IOCB_CMD_R1XTRA_ENTRIES; in lpfc_extra_ring_setup()
8921 pring->sli.sli3.numRiocb -= SLI2_IOCB_RSP_R1XTRA_ENTRIES; in lpfc_extra_ring_setup()
8922 pring->sli.sli3.numCiocb -= SLI2_IOCB_CMD_R3XTRA_ENTRIES; in lpfc_extra_ring_setup()
8923 pring->sli.sli3.numRiocb -= SLI2_IOCB_RSP_R3XTRA_ENTRIES; in lpfc_extra_ring_setup()
8926 pring = &psli->ring[psli->extra_ring]; in lpfc_extra_ring_setup()
8928 pring->sli.sli3.numCiocb += SLI2_IOCB_CMD_R1XTRA_ENTRIES; in lpfc_extra_ring_setup()
8929 pring->sli.sli3.numRiocb += SLI2_IOCB_RSP_R1XTRA_ENTRIES; in lpfc_extra_ring_setup()
8930 pring->sli.sli3.numCiocb += SLI2_IOCB_CMD_R3XTRA_ENTRIES; in lpfc_extra_ring_setup()
8931 pring->sli.sli3.numRiocb += SLI2_IOCB_RSP_R3XTRA_ENTRIES; in lpfc_extra_ring_setup()
8934 pring->iotag_max = 4096; in lpfc_extra_ring_setup()
8935 pring->num_mask = 1; in lpfc_extra_ring_setup()
8936 pring->prt[0].profile = 0; /* Mask 0 */ in lpfc_extra_ring_setup()
8937 pring->prt[0].rctl = phba->cfg_multi_ring_rctl; in lpfc_extra_ring_setup()
8938 pring->prt[0].type = phba->cfg_multi_ring_type; in lpfc_extra_ring_setup()
8939 pring->prt[0].lpfc_sli_rcv_unsol_event = NULL; in lpfc_extra_ring_setup()
9051 struct lpfc_sli_ring * pring, struct lpfc_iocbq * iocbq) in lpfc_sli_async_event_handler() argument
9099 pring->ringno, icmd->un.asyncstat.evt_code, in lpfc_sli_async_event_handler()
9126 struct lpfc_sli_ring *pring; in lpfc_sli_setup() local
9141 pring = &psli->ring[i]; in lpfc_sli_setup()
9145 pring->sli.sli3.numCiocb = SLI2_IOCB_CMD_R0_ENTRIES; in lpfc_sli_setup()
9146 pring->sli.sli3.numRiocb = SLI2_IOCB_RSP_R0_ENTRIES; in lpfc_sli_setup()
9147 pring->sli.sli3.numCiocb += in lpfc_sli_setup()
9149 pring->sli.sli3.numRiocb += in lpfc_sli_setup()
9151 pring->sli.sli3.numCiocb += in lpfc_sli_setup()
9153 pring->sli.sli3.numRiocb += in lpfc_sli_setup()
9155 pring->sli.sli3.sizeCiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9158 pring->sli.sli3.sizeRiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9161 pring->iotag_ctr = 0; in lpfc_sli_setup()
9162 pring->iotag_max = in lpfc_sli_setup()
9164 pring->fast_iotag = pring->iotag_max; in lpfc_sli_setup()
9165 pring->num_mask = 0; in lpfc_sli_setup()
9169 pring->sli.sli3.numCiocb = SLI2_IOCB_CMD_R1_ENTRIES; in lpfc_sli_setup()
9170 pring->sli.sli3.numRiocb = SLI2_IOCB_RSP_R1_ENTRIES; in lpfc_sli_setup()
9171 pring->sli.sli3.sizeCiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9174 pring->sli.sli3.sizeRiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9177 pring->iotag_max = phba->cfg_hba_queue_depth; in lpfc_sli_setup()
9178 pring->num_mask = 0; in lpfc_sli_setup()
9182 pring->sli.sli3.numCiocb = SLI2_IOCB_CMD_R2_ENTRIES; in lpfc_sli_setup()
9183 pring->sli.sli3.numRiocb = SLI2_IOCB_RSP_R2_ENTRIES; in lpfc_sli_setup()
9184 pring->sli.sli3.sizeCiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9187 pring->sli.sli3.sizeRiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9190 pring->fast_iotag = 0; in lpfc_sli_setup()
9191 pring->iotag_ctr = 0; in lpfc_sli_setup()
9192 pring->iotag_max = 4096; in lpfc_sli_setup()
9193 pring->lpfc_sli_rcv_async_status = in lpfc_sli_setup()
9195 pring->num_mask = LPFC_MAX_RING_MASK; in lpfc_sli_setup()
9196 pring->prt[0].profile = 0; /* Mask 0 */ in lpfc_sli_setup()
9197 pring->prt[0].rctl = FC_RCTL_ELS_REQ; in lpfc_sli_setup()
9198 pring->prt[0].type = FC_TYPE_ELS; in lpfc_sli_setup()
9199 pring->prt[0].lpfc_sli_rcv_unsol_event = in lpfc_sli_setup()
9201 pring->prt[1].profile = 0; /* Mask 1 */ in lpfc_sli_setup()
9202 pring->prt[1].rctl = FC_RCTL_ELS_REP; in lpfc_sli_setup()
9203 pring->prt[1].type = FC_TYPE_ELS; in lpfc_sli_setup()
9204 pring->prt[1].lpfc_sli_rcv_unsol_event = in lpfc_sli_setup()
9206 pring->prt[2].profile = 0; /* Mask 2 */ in lpfc_sli_setup()
9208 pring->prt[2].rctl = FC_RCTL_DD_UNSOL_CTL; in lpfc_sli_setup()
9210 pring->prt[2].type = FC_TYPE_CT; in lpfc_sli_setup()
9211 pring->prt[2].lpfc_sli_rcv_unsol_event = in lpfc_sli_setup()
9213 pring->prt[3].profile = 0; /* Mask 3 */ in lpfc_sli_setup()
9215 pring->prt[3].rctl = FC_RCTL_DD_SOL_CTL; in lpfc_sli_setup()
9217 pring->prt[3].type = FC_TYPE_CT; in lpfc_sli_setup()
9218 pring->prt[3].lpfc_sli_rcv_unsol_event = in lpfc_sli_setup()
9222 totiocbsize += (pring->sli.sli3.numCiocb * in lpfc_sli_setup()
9223 pring->sli.sli3.sizeCiocb) + in lpfc_sli_setup()
9224 (pring->sli.sli3.numRiocb * pring->sli.sli3.sizeRiocb); in lpfc_sli_setup()
9254 struct lpfc_sli_ring *pring; in lpfc_sli_queue_setup() local
9263 pring = &psli->ring[i]; in lpfc_sli_queue_setup()
9264 pring->ringno = i; in lpfc_sli_queue_setup()
9265 pring->sli.sli3.next_cmdidx = 0; in lpfc_sli_queue_setup()
9266 pring->sli.sli3.local_getidx = 0; in lpfc_sli_queue_setup()
9267 pring->sli.sli3.cmdidx = 0; in lpfc_sli_queue_setup()
9268 pring->flag = 0; in lpfc_sli_queue_setup()
9269 INIT_LIST_HEAD(&pring->txq); in lpfc_sli_queue_setup()
9270 INIT_LIST_HEAD(&pring->txcmplq); in lpfc_sli_queue_setup()
9271 INIT_LIST_HEAD(&pring->iocb_continueq); in lpfc_sli_queue_setup()
9272 INIT_LIST_HEAD(&pring->iocb_continue_saveq); in lpfc_sli_queue_setup()
9273 INIT_LIST_HEAD(&pring->postbufq); in lpfc_sli_queue_setup()
9274 spin_lock_init(&pring->ring_lock); in lpfc_sli_queue_setup()
9349 struct lpfc_sli_ring *pring; in lpfc_sli_host_down() local
9359 pring = &psli->ring[i]; in lpfc_sli_host_down()
9360 prev_pring_flag = pring->flag; in lpfc_sli_host_down()
9362 if (pring->ringno == LPFC_ELS_RING) { in lpfc_sli_host_down()
9363 pring->flag |= LPFC_DEFERRED_RING_EVENT; in lpfc_sli_host_down()
9371 list_for_each_entry_safe(iocb, next_iocb, &pring->txq, list) { in lpfc_sli_host_down()
9378 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, in lpfc_sli_host_down()
9382 lpfc_sli_issue_abort_iotag(phba, pring, iocb); in lpfc_sli_host_down()
9385 pring->flag = prev_pring_flag; in lpfc_sli_host_down()
9416 struct lpfc_sli_ring *pring; in lpfc_sli_hba_down() local
9430 pring = &psli->ring[i]; in lpfc_sli_hba_down()
9432 if (pring->ringno == LPFC_ELS_RING) { in lpfc_sli_hba_down()
9433 pring->flag |= LPFC_DEFERRED_RING_EVENT; in lpfc_sli_hba_down()
9442 list_splice_init(&pring->txq, &completions); in lpfc_sli_hba_down()
9541 lpfc_sli_ringpostbuf_put(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_ringpostbuf_put() argument
9547 list_add_tail(&mp->list, &pring->postbufq); in lpfc_sli_ringpostbuf_put()
9548 pring->postbufq_cnt++; in lpfc_sli_ringpostbuf_put()
9594 lpfc_sli_ring_taggedbuf_get(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_ring_taggedbuf_get() argument
9598 struct list_head *slp = &pring->postbufq; in lpfc_sli_ring_taggedbuf_get()
9602 list_for_each_entry_safe(mp, next_mp, &pring->postbufq, list) { in lpfc_sli_ring_taggedbuf_get()
9605 pring->postbufq_cnt--; in lpfc_sli_ring_taggedbuf_get()
9615 pring->ringno, (unsigned long) tag, in lpfc_sli_ring_taggedbuf_get()
9616 slp->next, slp->prev, pring->postbufq_cnt); in lpfc_sli_ring_taggedbuf_get()
9638 lpfc_sli_ringpostbuf_get(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_ringpostbuf_get() argument
9642 struct list_head *slp = &pring->postbufq; in lpfc_sli_ringpostbuf_get()
9646 list_for_each_entry_safe(mp, next_mp, &pring->postbufq, list) { in lpfc_sli_ringpostbuf_get()
9649 pring->postbufq_cnt--; in lpfc_sli_ringpostbuf_get()
9659 pring->ringno, (unsigned long long)phys, in lpfc_sli_ringpostbuf_get()
9660 slp->next, slp->prev, pring->postbufq_cnt); in lpfc_sli_ringpostbuf_get()
9762 lpfc_sli_abort_iotag_issue(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_abort_iotag_issue() argument
9829 lpfc_sli_calc_ring(phba, pring->ringno, abtsiocbp); in lpfc_sli_abort_iotag_issue()
9832 pring = &phba->sli.ring[ring_number]; in lpfc_sli_abort_iotag_issue()
9834 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_sli_abort_iotag_issue()
9835 retval = __lpfc_sli_issue_iocb(phba, pring->ringno, in lpfc_sli_abort_iotag_issue()
9837 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_sli_abort_iotag_issue()
9839 retval = __lpfc_sli_issue_iocb(phba, pring->ringno, in lpfc_sli_abort_iotag_issue()
9868 lpfc_sli_issue_abort_iotag(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_issue_abort_iotag() argument
9891 (pring->ringno == LPFC_ELS_RING)) { in lpfc_sli_issue_abort_iotag()
9900 retval = lpfc_sli_abort_iotag_issue(phba, pring, cmdiocb); in lpfc_sli_issue_abort_iotag()
9921 struct lpfc_sli_ring *pring; in lpfc_sli_hba_iocb_abort() local
9925 pring = &psli->ring[i]; in lpfc_sli_hba_iocb_abort()
9926 lpfc_sli_abort_iocb_ring(phba, pring); in lpfc_sli_hba_iocb_abort()
10081 lpfc_sli_abort_iocb(struct lpfc_vport *vport, struct lpfc_sli_ring *pring, in lpfc_sli_abort_iocb() argument
10140 ret_val = lpfc_sli_issue_iocb(phba, pring->ringno, in lpfc_sli_abort_iocb()
10175 lpfc_sli_abort_taskmgmt(struct lpfc_vport *vport, struct lpfc_sli_ring *pring, in lpfc_sli_abort_taskmgmt() argument
10264 ret_val = __lpfc_sli_issue_iocb(phba, pring->ringno, in lpfc_sli_abort_taskmgmt()
10419 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_sli_issue_iocb_wait() local
10487 list_for_each_entry(iocb, &pring->txq, list) { in lpfc_sli_issue_iocb_wait()
10490 list_for_each_entry(iocb, &pring->txcmplq, list) { in lpfc_sli_issue_iocb_wait()
11588 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_sli4_els_wcqe_to_rspiocbq() local
11594 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_sli4_els_wcqe_to_rspiocbq()
11595 pring->stats.iocb_event++; in lpfc_sli4_els_wcqe_to_rspiocbq()
11597 cmdiocbq = lpfc_sli_iocbq_lookup_by_tag(phba, pring, in lpfc_sli4_els_wcqe_to_rspiocbq()
11599 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_sli4_els_wcqe_to_rspiocbq()
11814 struct lpfc_sli_ring *pring = cq->pring; in lpfc_sli4_sp_handle_els_wcqe() local
11822 if (!list_empty(&pring->txq)) in lpfc_sli4_sp_handle_els_wcqe()
11824 if (!list_empty(&pring->txcmplq)) in lpfc_sli4_sp_handle_els_wcqe()
12158 struct lpfc_sli_ring *pring = cq->pring; in lpfc_sli4_fp_handle_fcp_wcqe() local
12186 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_sli4_fp_handle_fcp_wcqe()
12187 pring->stats.iocb_event++; in lpfc_sli4_fp_handle_fcp_wcqe()
12188 cmdiocbq = lpfc_sli_iocbq_lookup_by_tag(phba, pring, in lpfc_sli4_fp_handle_fcp_wcqe()
12190 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_sli4_fp_handle_fcp_wcqe()
16992 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_drain_txq() local
17000 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_drain_txq()
17001 list_for_each_entry(piocbq, &pring->txq, list) { in lpfc_drain_txq()
17005 if (txq_cnt > pring->txq_max) in lpfc_drain_txq()
17006 pring->txq_max = txq_cnt; in lpfc_drain_txq()
17008 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_drain_txq()
17010 while (!list_empty(&pring->txq)) { in lpfc_drain_txq()
17011 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_drain_txq()
17013 piocbq = lpfc_sli_ringtx_get(phba, pring); in lpfc_drain_txq()
17015 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_drain_txq()
17023 __lpfc_sli_ringtx_put(phba, pring, piocbq); in lpfc_drain_txq()
17024 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_drain_txq()
17041 lpfc_sli_ringtxcmpl_put(phba, pring, piocbq); in lpfc_drain_txq()
17052 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_drain_txq()