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()
8643 struct lpfc_sli_ring *pring = &phba->sli.ring[ring_number]; in __lpfc_sli_issue_iocb_s4() local
8650 if (!list_empty(&pring->txq)) { in __lpfc_sli_issue_iocb_s4()
8653 pring, piocb); in __lpfc_sli_issue_iocb_s4()
8663 pring, in __lpfc_sli_issue_iocb_s4()
8709 lpfc_sli_ringtxcmpl_put(phba, pring, piocb); in __lpfc_sli_issue_iocb_s4()
8826 struct lpfc_sli_ring *pring; in lpfc_sli_issue_iocb() local
8838 pring = &phba->sli.ring[ring_number]; in lpfc_sli_issue_iocb()
8839 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_sli_issue_iocb()
8841 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_sli_issue_iocb()
8894 struct lpfc_sli_ring *pring; in lpfc_extra_ring_setup() local
8901 pring = &psli->ring[psli->fcp_ring]; in lpfc_extra_ring_setup()
8902 pring->sli.sli3.numCiocb -= SLI2_IOCB_CMD_R1XTRA_ENTRIES; in lpfc_extra_ring_setup()
8903 pring->sli.sli3.numRiocb -= SLI2_IOCB_RSP_R1XTRA_ENTRIES; in lpfc_extra_ring_setup()
8904 pring->sli.sli3.numCiocb -= SLI2_IOCB_CMD_R3XTRA_ENTRIES; in lpfc_extra_ring_setup()
8905 pring->sli.sli3.numRiocb -= SLI2_IOCB_RSP_R3XTRA_ENTRIES; in lpfc_extra_ring_setup()
8908 pring = &psli->ring[psli->extra_ring]; in lpfc_extra_ring_setup()
8910 pring->sli.sli3.numCiocb += SLI2_IOCB_CMD_R1XTRA_ENTRIES; in lpfc_extra_ring_setup()
8911 pring->sli.sli3.numRiocb += SLI2_IOCB_RSP_R1XTRA_ENTRIES; in lpfc_extra_ring_setup()
8912 pring->sli.sli3.numCiocb += SLI2_IOCB_CMD_R3XTRA_ENTRIES; in lpfc_extra_ring_setup()
8913 pring->sli.sli3.numRiocb += SLI2_IOCB_RSP_R3XTRA_ENTRIES; in lpfc_extra_ring_setup()
8916 pring->iotag_max = 4096; in lpfc_extra_ring_setup()
8917 pring->num_mask = 1; in lpfc_extra_ring_setup()
8918 pring->prt[0].profile = 0; /* Mask 0 */ in lpfc_extra_ring_setup()
8919 pring->prt[0].rctl = phba->cfg_multi_ring_rctl; in lpfc_extra_ring_setup()
8920 pring->prt[0].type = phba->cfg_multi_ring_type; in lpfc_extra_ring_setup()
8921 pring->prt[0].lpfc_sli_rcv_unsol_event = NULL; in lpfc_extra_ring_setup()
9033 struct lpfc_sli_ring * pring, struct lpfc_iocbq * iocbq) in lpfc_sli_async_event_handler() argument
9081 pring->ringno, icmd->un.asyncstat.evt_code, in lpfc_sli_async_event_handler()
9108 struct lpfc_sli_ring *pring; in lpfc_sli_setup() local
9123 pring = &psli->ring[i]; in lpfc_sli_setup()
9127 pring->sli.sli3.numCiocb = SLI2_IOCB_CMD_R0_ENTRIES; in lpfc_sli_setup()
9128 pring->sli.sli3.numRiocb = SLI2_IOCB_RSP_R0_ENTRIES; in lpfc_sli_setup()
9129 pring->sli.sli3.numCiocb += in lpfc_sli_setup()
9131 pring->sli.sli3.numRiocb += in lpfc_sli_setup()
9133 pring->sli.sli3.numCiocb += in lpfc_sli_setup()
9135 pring->sli.sli3.numRiocb += in lpfc_sli_setup()
9137 pring->sli.sli3.sizeCiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9140 pring->sli.sli3.sizeRiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9143 pring->iotag_ctr = 0; in lpfc_sli_setup()
9144 pring->iotag_max = in lpfc_sli_setup()
9146 pring->fast_iotag = pring->iotag_max; in lpfc_sli_setup()
9147 pring->num_mask = 0; in lpfc_sli_setup()
9151 pring->sli.sli3.numCiocb = SLI2_IOCB_CMD_R1_ENTRIES; in lpfc_sli_setup()
9152 pring->sli.sli3.numRiocb = SLI2_IOCB_RSP_R1_ENTRIES; in lpfc_sli_setup()
9153 pring->sli.sli3.sizeCiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9156 pring->sli.sli3.sizeRiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9159 pring->iotag_max = phba->cfg_hba_queue_depth; in lpfc_sli_setup()
9160 pring->num_mask = 0; in lpfc_sli_setup()
9164 pring->sli.sli3.numCiocb = SLI2_IOCB_CMD_R2_ENTRIES; in lpfc_sli_setup()
9165 pring->sli.sli3.numRiocb = SLI2_IOCB_RSP_R2_ENTRIES; in lpfc_sli_setup()
9166 pring->sli.sli3.sizeCiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9169 pring->sli.sli3.sizeRiocb = (phba->sli_rev == 3) ? in lpfc_sli_setup()
9172 pring->fast_iotag = 0; in lpfc_sli_setup()
9173 pring->iotag_ctr = 0; in lpfc_sli_setup()
9174 pring->iotag_max = 4096; in lpfc_sli_setup()
9175 pring->lpfc_sli_rcv_async_status = in lpfc_sli_setup()
9177 pring->num_mask = LPFC_MAX_RING_MASK; in lpfc_sli_setup()
9178 pring->prt[0].profile = 0; /* Mask 0 */ in lpfc_sli_setup()
9179 pring->prt[0].rctl = FC_RCTL_ELS_REQ; in lpfc_sli_setup()
9180 pring->prt[0].type = FC_TYPE_ELS; in lpfc_sli_setup()
9181 pring->prt[0].lpfc_sli_rcv_unsol_event = in lpfc_sli_setup()
9183 pring->prt[1].profile = 0; /* Mask 1 */ in lpfc_sli_setup()
9184 pring->prt[1].rctl = FC_RCTL_ELS_REP; in lpfc_sli_setup()
9185 pring->prt[1].type = FC_TYPE_ELS; in lpfc_sli_setup()
9186 pring->prt[1].lpfc_sli_rcv_unsol_event = in lpfc_sli_setup()
9188 pring->prt[2].profile = 0; /* Mask 2 */ in lpfc_sli_setup()
9190 pring->prt[2].rctl = FC_RCTL_DD_UNSOL_CTL; in lpfc_sli_setup()
9192 pring->prt[2].type = FC_TYPE_CT; in lpfc_sli_setup()
9193 pring->prt[2].lpfc_sli_rcv_unsol_event = in lpfc_sli_setup()
9195 pring->prt[3].profile = 0; /* Mask 3 */ in lpfc_sli_setup()
9197 pring->prt[3].rctl = FC_RCTL_DD_SOL_CTL; in lpfc_sli_setup()
9199 pring->prt[3].type = FC_TYPE_CT; in lpfc_sli_setup()
9200 pring->prt[3].lpfc_sli_rcv_unsol_event = in lpfc_sli_setup()
9204 totiocbsize += (pring->sli.sli3.numCiocb * in lpfc_sli_setup()
9205 pring->sli.sli3.sizeCiocb) + in lpfc_sli_setup()
9206 (pring->sli.sli3.numRiocb * pring->sli.sli3.sizeRiocb); in lpfc_sli_setup()
9236 struct lpfc_sli_ring *pring; in lpfc_sli_queue_setup() local
9245 pring = &psli->ring[i]; in lpfc_sli_queue_setup()
9246 pring->ringno = i; in lpfc_sli_queue_setup()
9247 pring->sli.sli3.next_cmdidx = 0; in lpfc_sli_queue_setup()
9248 pring->sli.sli3.local_getidx = 0; in lpfc_sli_queue_setup()
9249 pring->sli.sli3.cmdidx = 0; in lpfc_sli_queue_setup()
9250 pring->flag = 0; in lpfc_sli_queue_setup()
9251 INIT_LIST_HEAD(&pring->txq); in lpfc_sli_queue_setup()
9252 INIT_LIST_HEAD(&pring->txcmplq); in lpfc_sli_queue_setup()
9253 INIT_LIST_HEAD(&pring->iocb_continueq); in lpfc_sli_queue_setup()
9254 INIT_LIST_HEAD(&pring->iocb_continue_saveq); in lpfc_sli_queue_setup()
9255 INIT_LIST_HEAD(&pring->postbufq); in lpfc_sli_queue_setup()
9256 spin_lock_init(&pring->ring_lock); in lpfc_sli_queue_setup()
9331 struct lpfc_sli_ring *pring; in lpfc_sli_host_down() local
9341 pring = &psli->ring[i]; in lpfc_sli_host_down()
9342 prev_pring_flag = pring->flag; in lpfc_sli_host_down()
9344 if (pring->ringno == LPFC_ELS_RING) { in lpfc_sli_host_down()
9345 pring->flag |= LPFC_DEFERRED_RING_EVENT; in lpfc_sli_host_down()
9353 list_for_each_entry_safe(iocb, next_iocb, &pring->txq, list) { in lpfc_sli_host_down()
9360 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, in lpfc_sli_host_down()
9364 lpfc_sli_issue_abort_iotag(phba, pring, iocb); in lpfc_sli_host_down()
9367 pring->flag = prev_pring_flag; in lpfc_sli_host_down()
9398 struct lpfc_sli_ring *pring; in lpfc_sli_hba_down() local
9412 pring = &psli->ring[i]; in lpfc_sli_hba_down()
9414 if (pring->ringno == LPFC_ELS_RING) { in lpfc_sli_hba_down()
9415 pring->flag |= LPFC_DEFERRED_RING_EVENT; in lpfc_sli_hba_down()
9424 list_splice_init(&pring->txq, &completions); in lpfc_sli_hba_down()
9523 lpfc_sli_ringpostbuf_put(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_ringpostbuf_put() argument
9529 list_add_tail(&mp->list, &pring->postbufq); in lpfc_sli_ringpostbuf_put()
9530 pring->postbufq_cnt++; in lpfc_sli_ringpostbuf_put()
9576 lpfc_sli_ring_taggedbuf_get(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_ring_taggedbuf_get() argument
9580 struct list_head *slp = &pring->postbufq; in lpfc_sli_ring_taggedbuf_get()
9584 list_for_each_entry_safe(mp, next_mp, &pring->postbufq, list) { in lpfc_sli_ring_taggedbuf_get()
9587 pring->postbufq_cnt--; in lpfc_sli_ring_taggedbuf_get()
9597 pring->ringno, (unsigned long) tag, in lpfc_sli_ring_taggedbuf_get()
9598 slp->next, slp->prev, pring->postbufq_cnt); in lpfc_sli_ring_taggedbuf_get()
9620 lpfc_sli_ringpostbuf_get(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_ringpostbuf_get() argument
9624 struct list_head *slp = &pring->postbufq; in lpfc_sli_ringpostbuf_get()
9628 list_for_each_entry_safe(mp, next_mp, &pring->postbufq, list) { in lpfc_sli_ringpostbuf_get()
9631 pring->postbufq_cnt--; in lpfc_sli_ringpostbuf_get()
9641 pring->ringno, (unsigned long long)phys, in lpfc_sli_ringpostbuf_get()
9642 slp->next, slp->prev, pring->postbufq_cnt); in lpfc_sli_ringpostbuf_get()
9744 lpfc_sli_abort_iotag_issue(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_abort_iotag_issue() argument
9811 lpfc_sli_calc_ring(phba, pring->ringno, abtsiocbp); in lpfc_sli_abort_iotag_issue()
9814 pring = &phba->sli.ring[ring_number]; in lpfc_sli_abort_iotag_issue()
9816 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_sli_abort_iotag_issue()
9817 retval = __lpfc_sli_issue_iocb(phba, pring->ringno, in lpfc_sli_abort_iotag_issue()
9819 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_sli_abort_iotag_issue()
9821 retval = __lpfc_sli_issue_iocb(phba, pring->ringno, in lpfc_sli_abort_iotag_issue()
9850 lpfc_sli_issue_abort_iotag(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_sli_issue_abort_iotag() argument
9873 (pring->ringno == LPFC_ELS_RING)) { in lpfc_sli_issue_abort_iotag()
9882 retval = lpfc_sli_abort_iotag_issue(phba, pring, cmdiocb); in lpfc_sli_issue_abort_iotag()
9903 struct lpfc_sli_ring *pring; in lpfc_sli_hba_iocb_abort() local
9907 pring = &psli->ring[i]; in lpfc_sli_hba_iocb_abort()
9908 lpfc_sli_abort_iocb_ring(phba, pring); in lpfc_sli_hba_iocb_abort()
10063 lpfc_sli_abort_iocb(struct lpfc_vport *vport, struct lpfc_sli_ring *pring, in lpfc_sli_abort_iocb() argument
10122 ret_val = lpfc_sli_issue_iocb(phba, pring->ringno, in lpfc_sli_abort_iocb()
10157 lpfc_sli_abort_taskmgmt(struct lpfc_vport *vport, struct lpfc_sli_ring *pring, in lpfc_sli_abort_taskmgmt() argument
10246 ret_val = __lpfc_sli_issue_iocb(phba, pring->ringno, in lpfc_sli_abort_taskmgmt()
10401 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_sli_issue_iocb_wait() local
10469 list_for_each_entry(iocb, &pring->txq, list) { in lpfc_sli_issue_iocb_wait()
10472 list_for_each_entry(iocb, &pring->txcmplq, list) { in lpfc_sli_issue_iocb_wait()
11570 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_sli4_els_wcqe_to_rspiocbq() local
11576 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_sli4_els_wcqe_to_rspiocbq()
11577 pring->stats.iocb_event++; in lpfc_sli4_els_wcqe_to_rspiocbq()
11579 cmdiocbq = lpfc_sli_iocbq_lookup_by_tag(phba, pring, in lpfc_sli4_els_wcqe_to_rspiocbq()
11581 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_sli4_els_wcqe_to_rspiocbq()
11796 struct lpfc_sli_ring *pring = cq->pring; in lpfc_sli4_sp_handle_els_wcqe() local
11804 if (!list_empty(&pring->txq)) in lpfc_sli4_sp_handle_els_wcqe()
11806 if (!list_empty(&pring->txcmplq)) in lpfc_sli4_sp_handle_els_wcqe()
12140 struct lpfc_sli_ring *pring = cq->pring; in lpfc_sli4_fp_handle_fcp_wcqe() local
12168 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_sli4_fp_handle_fcp_wcqe()
12169 pring->stats.iocb_event++; in lpfc_sli4_fp_handle_fcp_wcqe()
12170 cmdiocbq = lpfc_sli_iocbq_lookup_by_tag(phba, pring, in lpfc_sli4_fp_handle_fcp_wcqe()
12172 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_sli4_fp_handle_fcp_wcqe()
16966 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_drain_txq() local
16974 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_drain_txq()
16975 list_for_each_entry(piocbq, &pring->txq, list) { in lpfc_drain_txq()
16979 if (txq_cnt > pring->txq_max) in lpfc_drain_txq()
16980 pring->txq_max = txq_cnt; in lpfc_drain_txq()
16982 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_drain_txq()
16984 while (!list_empty(&pring->txq)) { in lpfc_drain_txq()
16985 spin_lock_irqsave(&pring->ring_lock, iflags); in lpfc_drain_txq()
16987 piocbq = lpfc_sli_ringtx_get(phba, pring); in lpfc_drain_txq()
16989 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_drain_txq()
16997 __lpfc_sli_ringtx_put(phba, pring, piocbq); in lpfc_drain_txq()
16998 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_drain_txq()
17015 lpfc_sli_ringtxcmpl_put(phba, pring, piocbq); in lpfc_drain_txq()
17026 spin_unlock_irqrestore(&pring->ring_lock, iflags); in lpfc_drain_txq()