/linux-4.4.14/drivers/scsi/lpfc/ |
H A D | lpfc_sli.c | 533 * @pring: Pointer to driver SLI ring object. 541 lpfc_cmd_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) lpfc_cmd_iocb() argument 543 return (IOCB_t *) (((char *) pring->sli.sli3.cmdringaddr) + lpfc_cmd_iocb() 544 pring->sli.sli3.cmdidx * phba->iocb_cmd_size); lpfc_cmd_iocb() 550 * @pring: Pointer to driver SLI ring object. 558 lpfc_resp_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) lpfc_resp_iocb() argument 560 return (IOCB_t *) (((char *) pring->sli.sli3.rspringaddr) + lpfc_resp_iocb() 561 pring->sli.sli3.rspidx * phba->iocb_rsp_size); lpfc_resp_iocb() 1004 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; __lpfc_sli_release_iocbq_s4() local 1022 spin_lock_irqsave(&pring->ring_lock, iflag); __lpfc_sli_release_iocbq_s4() 1027 spin_unlock_irqrestore(&pring->ring_lock, iflag); __lpfc_sli_release_iocbq_s4() 1030 if (!list_empty(&pring->txq)) __lpfc_sli_release_iocbq_s4() 1300 * @pring: Pointer to driver SLI ring object. 1310 lpfc_sli_ringtxcmpl_put(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_ringtxcmpl_put() argument 1313 list_add_tail(&piocb->list, &pring->txcmplq); lpfc_sli_ringtxcmpl_put() 1316 if ((unlikely(pring->ringno == LPFC_ELS_RING)) && lpfc_sli_ringtxcmpl_put() 1335 * @pring: Pointer to driver SLI ring object. 1343 lpfc_sli_ringtx_get(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) lpfc_sli_ringtx_get() argument 1347 list_remove_head((&pring->txq), cmd_iocb, struct lpfc_iocbq, list); lpfc_sli_ringtx_get() 1354 * @pring: Pointer to driver SLI ring object. 1366 lpfc_sli_next_iocb_slot (struct lpfc_hba *phba, struct lpfc_sli_ring *pring) lpfc_sli_next_iocb_slot() argument 1368 struct lpfc_pgp *pgp = &phba->port_gp[pring->ringno]; lpfc_sli_next_iocb_slot() 1369 uint32_t max_cmd_idx = pring->sli.sli3.numCiocb; lpfc_sli_next_iocb_slot() 1370 if ((pring->sli.sli3.next_cmdidx == pring->sli.sli3.cmdidx) && lpfc_sli_next_iocb_slot() 1371 (++pring->sli.sli3.next_cmdidx >= max_cmd_idx)) lpfc_sli_next_iocb_slot() 1372 pring->sli.sli3.next_cmdidx = 0; lpfc_sli_next_iocb_slot() 1374 if (unlikely(pring->sli.sli3.local_getidx == lpfc_sli_next_iocb_slot() 1375 pring->sli.sli3.next_cmdidx)) { lpfc_sli_next_iocb_slot() 1377 pring->sli.sli3.local_getidx = le32_to_cpu(pgp->cmdGetInx); lpfc_sli_next_iocb_slot() 1379 if (unlikely(pring->sli.sli3.local_getidx >= max_cmd_idx)) { lpfc_sli_next_iocb_slot() 1383 pring->ringno, lpfc_sli_next_iocb_slot() 1384 pring->sli.sli3.local_getidx, lpfc_sli_next_iocb_slot() 1400 if (pring->sli.sli3.local_getidx == pring->sli.sli3.next_cmdidx) lpfc_sli_next_iocb_slot() 1404 return lpfc_cmd_iocb(phba, pring); lpfc_sli_next_iocb_slot() 1485 * @pring: Pointer to driver SLI ring object. 1497 lpfc_sli_submit_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_submit_iocb() argument 1506 if (pring->ringno == LPFC_ELS_RING) { lpfc_sli_submit_iocb() 1519 pring->stats.iocb_cmd++; lpfc_sli_submit_iocb() 1527 lpfc_sli_ringtxcmpl_put(phba, pring, nextiocb); lpfc_sli_submit_iocb() 1535 pring->sli.sli3.cmdidx = pring->sli.sli3.next_cmdidx; lpfc_sli_submit_iocb() 1536 writel(pring->sli.sli3.cmdidx, &phba->host_gp[pring->ringno].cmdPutInx); lpfc_sli_submit_iocb() 1542 * @pring: Pointer to driver SLI ring object. 1552 lpfc_sli_update_full_ring(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) lpfc_sli_update_full_ring() argument 1554 int ringno = pring->ringno; lpfc_sli_update_full_ring() 1556 pring->flag |= LPFC_CALL_RING_AVAILABLE; lpfc_sli_update_full_ring() 1567 pring->stats.iocb_cmd_full++; lpfc_sli_update_full_ring() 1573 * @pring: Pointer to driver SLI ring object. 1580 lpfc_sli_update_ring(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) lpfc_sli_update_ring() argument 1582 int ringno = pring->ringno; lpfc_sli_update_ring() 1597 * @pring: Pointer to driver SLI ring object. 1604 lpfc_sli_resume_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) lpfc_sli_resume_iocb() argument 1618 (!list_empty(&pring->txq)) && lpfc_sli_resume_iocb() 1619 (pring->ringno != phba->sli.fcp_ring || lpfc_sli_resume_iocb() 1622 while ((iocb = lpfc_sli_next_iocb_slot(phba, pring)) && lpfc_sli_resume_iocb() 1623 (nextiocb = lpfc_sli_ringtx_get(phba, pring))) lpfc_sli_resume_iocb() 1624 lpfc_sli_submit_iocb(phba, pring, iocb, nextiocb); lpfc_sli_resume_iocb() 1627 lpfc_sli_update_ring(phba, pring); lpfc_sli_resume_iocb() 1629 lpfc_sli_update_full_ring(phba, pring); lpfc_sli_resume_iocb() 2395 * @pring: Pointer to driver SLI ring object. 2406 struct lpfc_sli_ring *pring, lpfc_sli_get_buff() 2412 return lpfc_sli_ring_taggedbuf_get(phba, pring, tag); lpfc_sli_get_buff() 2422 * @pring: Pointer to driver SLI ring object. 2432 lpfc_complete_unsol_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_complete_unsol_iocb() argument 2439 if (pring->prt[0].profile) { lpfc_complete_unsol_iocb() 2440 if (pring->prt[0].lpfc_sli_rcv_unsol_event) lpfc_complete_unsol_iocb() 2441 (pring->prt[0].lpfc_sli_rcv_unsol_event) (phba, pring, lpfc_complete_unsol_iocb() 2447 for (i = 0; i < pring->num_mask; i++) { lpfc_complete_unsol_iocb() 2448 if ((pring->prt[i].rctl == fch_r_ctl) && lpfc_complete_unsol_iocb() 2449 (pring->prt[i].type == fch_type)) { lpfc_complete_unsol_iocb() 2450 if (pring->prt[i].lpfc_sli_rcv_unsol_event) lpfc_complete_unsol_iocb() 2451 (pring->prt[i].lpfc_sli_rcv_unsol_event) lpfc_complete_unsol_iocb() 2452 (phba, pring, saveq); lpfc_complete_unsol_iocb() 2462 * @pring: Pointer to driver SLI ring object. 2474 lpfc_sli_process_unsol_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_process_unsol_iocb() argument 2486 if (pring->lpfc_sli_rcv_async_status) lpfc_sli_process_unsol_iocb() 2487 pring->lpfc_sli_rcv_async_status(phba, pring, saveq); lpfc_sli_process_unsol_iocb() 2495 pring->ringno, lpfc_sli_process_unsol_iocb() 2503 dmzbuf = lpfc_sli_get_buff(phba, pring, lpfc_sli_process_unsol_iocb() 2509 dmzbuf = lpfc_sli_get_buff(phba, pring, lpfc_sli_process_unsol_iocb() 2515 dmzbuf = lpfc_sli_get_buff(phba, pring, lpfc_sli_process_unsol_iocb() 2525 saveq->context2 = lpfc_sli_get_buff(phba, pring, lpfc_sli_process_unsol_iocb() 2533 pring->ringno, lpfc_sli_process_unsol_iocb() 2537 saveq->context3 = lpfc_sli_get_buff(phba, pring, lpfc_sli_process_unsol_iocb() 2545 pring->ringno, lpfc_sli_process_unsol_iocb() 2551 iocbq->context2 = lpfc_sli_get_buff(phba, pring, lpfc_sli_process_unsol_iocb() 2559 ". tag 0x%x\n", pring->ringno, lpfc_sli_process_unsol_iocb() 2563 iocbq->context3 = lpfc_sli_get_buff(phba, pring, lpfc_sli_process_unsol_iocb() 2572 pring->ringno, lpfc_sli_process_unsol_iocb() 2583 list_for_each_entry(iocbq, &pring->iocb_continue_saveq, clist) { lpfc_sli_process_unsol_iocb() 2593 &pring->iocb_continue_saveq); lpfc_sli_process_unsol_iocb() 2612 if ((Rctl == 0) && (pring->ringno == LPFC_ELS_RING) && lpfc_sli_process_unsol_iocb() 2622 if (!lpfc_complete_unsol_iocb(phba, pring, saveq, Rctl, Type)) lpfc_sli_process_unsol_iocb() 2626 pring->ringno, Rctl, Type); lpfc_sli_process_unsol_iocb() 2634 * @pring: Pointer to driver SLI ring object. 2645 struct lpfc_sli_ring *pring, lpfc_sli_iocbq_lookup() 2673 * @pring: Pointer to driver SLI ring object. 2684 struct lpfc_sli_ring *pring, uint16_t iotag) lpfc_sli_iocbq_lookup_by_tag() 2706 * @pring: Pointer to driver SLI ring object. 2721 lpfc_sli_process_sol_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_process_sol_iocb() argument 2730 cmdiocbp = lpfc_sli_iocbq_lookup(phba, pring, saveq); lpfc_sli_process_sol_iocb() 2740 (pring->ringno == LPFC_ELS_RING) && lpfc_sli_process_sol_iocb() 2750 if (pring->ringno == LPFC_ELS_RING) { lpfc_sli_process_sol_iocb() 2836 if (pring->ringno != LPFC_ELS_RING) { lpfc_sli_process_sol_iocb() 2845 pring->ringno, lpfc_sli_process_sol_iocb() 2860 * @pring: Pointer to driver SLI ring object. 2868 lpfc_sli_rsp_pointers_error(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) lpfc_sli_rsp_pointers_error() argument 2870 struct lpfc_pgp *pgp = &phba->port_gp[pring->ringno]; lpfc_sli_rsp_pointers_error() 2878 pring->ringno, le32_to_cpu(pgp->rspPutInx), lpfc_sli_rsp_pointers_error() 2879 pring->sli.sli3.numRiocb); lpfc_sli_rsp_pointers_error() 2946 * @pring: Pointer to driver SLI ring object. 2962 struct lpfc_sli_ring *pring, uint32_t mask) lpfc_sli_handle_fast_ring_event() 2964 struct lpfc_pgp *pgp = &phba->port_gp[pring->ringno]; lpfc_sli_handle_fast_ring_event() 2977 pring->stats.iocb_event++; lpfc_sli_handle_fast_ring_event() 2983 portRspMax = pring->sli.sli3.numRiocb; lpfc_sli_handle_fast_ring_event() 2986 lpfc_sli_rsp_pointers_error(phba, pring); lpfc_sli_handle_fast_ring_event() 2997 while (pring->sli.sli3.rspidx != portRspPut) { lpfc_sli_handle_fast_ring_event() 3003 entry = lpfc_resp_iocb(phba, pring); lpfc_sli_handle_fast_ring_event() 3006 if (++pring->sli.sli3.rspidx >= portRspMax) lpfc_sli_handle_fast_ring_event() 3007 pring->sli.sli3.rspidx = 0; lpfc_sli_handle_fast_ring_event() 3016 pring->stats.iocb_rsp++; lpfc_sli_handle_fast_ring_event() 3036 pring->ringno, lpfc_sli_handle_fast_ring_event() 3063 cmdiocbq = lpfc_sli_iocbq_lookup(phba, pring, lpfc_sli_handle_fast_ring_event() 3078 lpfc_sli_process_unsol_iocb(phba, pring, &rspiocbq); lpfc_sli_handle_fast_ring_event() 3109 writel(pring->sli.sli3.rspidx, lpfc_sli_handle_fast_ring_event() 3110 &phba->host_gp[pring->ringno].rspGetInx); lpfc_sli_handle_fast_ring_event() 3112 if (pring->sli.sli3.rspidx == portRspPut) lpfc_sli_handle_fast_ring_event() 3117 pring->stats.iocb_rsp_full++; lpfc_sli_handle_fast_ring_event() 3118 status = ((CA_R0ATT | CA_R0RE_RSP) << (pring->ringno * 4)); lpfc_sli_handle_fast_ring_event() 3122 if ((mask & HA_R0CE_RSP) && (pring->flag & LPFC_CALL_RING_AVAILABLE)) { lpfc_sli_handle_fast_ring_event() 3123 pring->flag &= ~LPFC_CALL_RING_AVAILABLE; lpfc_sli_handle_fast_ring_event() 3124 pring->stats.iocb_cmd_empty++; lpfc_sli_handle_fast_ring_event() 3127 pring->sli.sli3.local_getidx = le32_to_cpu(pgp->cmdGetInx); lpfc_sli_handle_fast_ring_event() 3128 lpfc_sli_resume_iocb(phba, pring); lpfc_sli_handle_fast_ring_event() 3130 if ((pring->lpfc_sli_cmd_available)) lpfc_sli_handle_fast_ring_event() 3131 (pring->lpfc_sli_cmd_available) (phba, pring); lpfc_sli_handle_fast_ring_event() 3143 * @pring: Pointer to driver SLI ring object. 3159 lpfc_sli_sp_handle_rspiocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_sp_handle_rspiocb() argument 3174 list_add_tail(&rspiocbp->list, &(pring->iocb_continueq)); lpfc_sli_sp_handle_rspiocb() 3175 pring->iocb_continueq_cnt++; lpfc_sli_sp_handle_rspiocb() 3185 saveq = list_get_first(&pring->iocb_continueq, lpfc_sli_sp_handle_rspiocb() 3188 list_del_init(&pring->iocb_continueq); lpfc_sli_sp_handle_rspiocb() 3189 pring->iocb_continueq_cnt = 0; lpfc_sli_sp_handle_rspiocb() 3191 pring->stats.iocb_rsp++; lpfc_sli_sp_handle_rspiocb() 3214 pring->ringno, lpfc_sli_sp_handle_rspiocb() 3244 rc = lpfc_sli_process_sol_iocb(phba, pring, saveq); lpfc_sli_sp_handle_rspiocb() 3250 rc = lpfc_sli_process_unsol_iocb(phba, pring, saveq); lpfc_sli_sp_handle_rspiocb() 3259 cmdiocbp = lpfc_sli_iocbq_lookup(phba, pring, lpfc_sli_sp_handle_rspiocb() 3316 * @pring: Pointer to driver SLI ring object. 3324 struct lpfc_sli_ring *pring, uint32_t mask) lpfc_sli_handle_slow_ring_event() 3326 phba->lpfc_sli_handle_slow_ring_event(phba, pring, mask); lpfc_sli_handle_slow_ring_event() 3332 * @pring: Pointer to driver SLI ring object. 3342 struct lpfc_sli_ring *pring, uint32_t mask) lpfc_sli_handle_slow_ring_event_s3() 3352 pgp = &phba->port_gp[pring->ringno]; lpfc_sli_handle_slow_ring_event_s3() 3354 pring->stats.iocb_event++; lpfc_sli_handle_slow_ring_event_s3() 3360 portRspMax = pring->sli.sli3.numRiocb; lpfc_sli_handle_slow_ring_event_s3() 3370 pring->ringno, portRspPut, portRspMax); lpfc_sli_handle_slow_ring_event_s3() 3382 while (pring->sli.sli3.rspidx != portRspPut) { lpfc_sli_handle_slow_ring_event_s3() 3396 entry = lpfc_resp_iocb(phba, pring); lpfc_sli_handle_slow_ring_event_s3() 3410 if (++pring->sli.sli3.rspidx >= portRspMax) lpfc_sli_handle_slow_ring_event_s3() 3411 pring->sli.sli3.rspidx = 0; lpfc_sli_handle_slow_ring_event_s3() 3413 if (pring->ringno == LPFC_ELS_RING) { lpfc_sli_handle_slow_ring_event_s3() 3421 writel(pring->sli.sli3.rspidx, lpfc_sli_handle_slow_ring_event_s3() 3422 &phba->host_gp[pring->ringno].rspGetInx); lpfc_sli_handle_slow_ring_event_s3() 3426 rspiocbp = lpfc_sli_sp_handle_rspiocb(phba, pring, rspiocbp); lpfc_sli_handle_slow_ring_event_s3() 3434 if (pring->sli.sli3.rspidx == portRspPut) { lpfc_sli_handle_slow_ring_event_s3() 3437 } /* while (pring->sli.sli3.rspidx != portRspPut) */ lpfc_sli_handle_slow_ring_event_s3() 3441 pring->stats.iocb_rsp_full++; lpfc_sli_handle_slow_ring_event_s3() 3443 status = ((CA_R0ATT | CA_R0RE_RSP) << (pring->ringno * 4)); lpfc_sli_handle_slow_ring_event_s3() 3447 if ((mask & HA_R0CE_RSP) && (pring->flag & LPFC_CALL_RING_AVAILABLE)) { lpfc_sli_handle_slow_ring_event_s3() 3448 pring->flag &= ~LPFC_CALL_RING_AVAILABLE; lpfc_sli_handle_slow_ring_event_s3() 3449 pring->stats.iocb_cmd_empty++; lpfc_sli_handle_slow_ring_event_s3() 3452 pring->sli.sli3.local_getidx = le32_to_cpu(pgp->cmdGetInx); lpfc_sli_handle_slow_ring_event_s3() 3453 lpfc_sli_resume_iocb(phba, pring); lpfc_sli_handle_slow_ring_event_s3() 3455 if ((pring->lpfc_sli_cmd_available)) lpfc_sli_handle_slow_ring_event_s3() 3456 (pring->lpfc_sli_cmd_available) (phba, pring); lpfc_sli_handle_slow_ring_event_s3() 3467 * @pring: Pointer to driver SLI ring object. 3478 struct lpfc_sli_ring *pring, uint32_t mask) lpfc_sli_handle_slow_ring_event_s4() 3503 lpfc_sli_sp_handle_rspiocb(phba, pring, lpfc_sli_handle_slow_ring_event_s4() 3521 * @pring: Pointer to driver SLI ring object. 3529 lpfc_sli_abort_iocb_ring(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) lpfc_sli_abort_iocb_ring() argument 3534 if (pring->ringno == LPFC_ELS_RING) { lpfc_sli_abort_iocb_ring() 3542 spin_lock_irq(&pring->ring_lock); lpfc_sli_abort_iocb_ring() 3543 list_splice_init(&pring->txq, &completions); lpfc_sli_abort_iocb_ring() 3544 pring->txq_cnt = 0; lpfc_sli_abort_iocb_ring() 3545 spin_unlock_irq(&pring->ring_lock); lpfc_sli_abort_iocb_ring() 3549 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) lpfc_sli_abort_iocb_ring() 3550 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_sli_abort_iocb_ring() 3554 list_splice_init(&pring->txq, &completions); lpfc_sli_abort_iocb_ring() 3555 pring->txq_cnt = 0; lpfc_sli_abort_iocb_ring() 3558 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) lpfc_sli_abort_iocb_ring() 3559 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_sli_abort_iocb_ring() 3571 * @pring: Pointer to driver SLI ring object. 3582 struct lpfc_sli_ring *pring; lpfc_sli_abort_fcp_rings() local 3588 pring = &psli->ring[i + MAX_SLI3_CONFIGURED_RINGS]; lpfc_sli_abort_fcp_rings() 3589 lpfc_sli_abort_iocb_ring(phba, pring); lpfc_sli_abort_fcp_rings() 3592 pring = &psli->ring[psli->fcp_ring]; lpfc_sli_abort_fcp_rings() 3593 lpfc_sli_abort_iocb_ring(phba, pring); lpfc_sli_abort_fcp_rings() 3614 struct lpfc_sli_ring *pring; lpfc_sli_flush_fcp_rings() local 3625 pring = &psli->ring[i + MAX_SLI3_CONFIGURED_RINGS]; lpfc_sli_flush_fcp_rings() 3627 spin_lock_irq(&pring->ring_lock); lpfc_sli_flush_fcp_rings() 3629 list_splice_init(&pring->txq, &txq); lpfc_sli_flush_fcp_rings() 3631 list_splice_init(&pring->txcmplq, &txcmplq); lpfc_sli_flush_fcp_rings() 3632 pring->txq_cnt = 0; lpfc_sli_flush_fcp_rings() 3633 pring->txcmplq_cnt = 0; lpfc_sli_flush_fcp_rings() 3634 spin_unlock_irq(&pring->ring_lock); lpfc_sli_flush_fcp_rings() 3646 pring = &psli->ring[psli->fcp_ring]; lpfc_sli_flush_fcp_rings() 3650 list_splice_init(&pring->txq, &txq); lpfc_sli_flush_fcp_rings() 3652 list_splice_init(&pring->txcmplq, &txcmplq); lpfc_sli_flush_fcp_rings() 3653 pring->txq_cnt = 0; lpfc_sli_flush_fcp_rings() 3654 pring->txcmplq_cnt = 0; lpfc_sli_flush_fcp_rings() 4001 struct lpfc_sli_ring *pring; lpfc_sli_brdreset() local 4038 pring = &psli->ring[i]; lpfc_sli_brdreset() 4039 pring->flag = 0; lpfc_sli_brdreset() 4040 pring->sli.sli3.rspidx = 0; lpfc_sli_brdreset() 4041 pring->sli.sli3.next_cmdidx = 0; lpfc_sli_brdreset() 4042 pring->sli.sli3.local_getidx = 0; lpfc_sli_brdreset() 4043 pring->sli.sli3.cmdidx = 0; lpfc_sli_brdreset() 4044 pring->missbufcnt = 0; lpfc_sli_brdreset() 6104 struct lpfc_sli_ring *pring; lpfc_sli4_repost_els_sgl_list() local 6111 pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_sli4_repost_els_sgl_list() 6113 spin_lock(&pring->ring_lock); lpfc_sli4_repost_els_sgl_list() 6115 spin_unlock(&pring->ring_lock); lpfc_sli4_repost_els_sgl_list() 6217 spin_lock(&pring->ring_lock); lpfc_sli4_repost_els_sgl_list() 6220 spin_unlock(&pring->ring_lock); lpfc_sli4_repost_els_sgl_list() 7853 * @pring: Pointer to driver SLI ring object. 7861 __lpfc_sli_ringtx_put(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, __lpfc_sli_ringtx_put() argument 7865 list_add_tail(&piocb->list, &pring->txq); __lpfc_sli_ringtx_put() 7871 * @pring: Pointer to driver SLI ring object. 7886 lpfc_sli_next_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_next_iocb() argument 7891 nextiocb = lpfc_sli_ringtx_get(phba, pring); lpfc_sli_next_iocb() 7928 struct lpfc_sli_ring *pring = &phba->sli.ring[ring_number]; __lpfc_sli_issue_iocb_s3() local 7960 if (unlikely(pring->flag & LPFC_STOP_IOCB_EVENT)) __lpfc_sli_issue_iocb_s3() 8000 } else if (unlikely(pring->ringno == phba->sli.fcp_ring && __lpfc_sli_issue_iocb_s3() 8005 while ((iocb = lpfc_sli_next_iocb_slot(phba, pring)) && __lpfc_sli_issue_iocb_s3() 8006 (nextiocb = lpfc_sli_next_iocb(phba, pring, &piocb))) __lpfc_sli_issue_iocb_s3() 8007 lpfc_sli_submit_iocb(phba, pring, iocb, nextiocb); __lpfc_sli_issue_iocb_s3() 8010 lpfc_sli_update_ring(phba, pring); __lpfc_sli_issue_iocb_s3() 8012 lpfc_sli_update_full_ring(phba, pring); __lpfc_sli_issue_iocb_s3() 8020 pring->stats.iocb_cmd_delay++; __lpfc_sli_issue_iocb_s3() 8025 __lpfc_sli_ringtx_put(phba, pring, piocb); __lpfc_sli_issue_iocb_s3() 8643 struct lpfc_sli_ring *pring = &phba->sli.ring[ring_number]; __lpfc_sli_issue_iocb_s4() local 8650 if (!list_empty(&pring->txq)) { __lpfc_sli_issue_iocb_s4() 8653 pring, piocb); __lpfc_sli_issue_iocb_s4() 8663 pring, __lpfc_sli_issue_iocb_s4() 8709 lpfc_sli_ringtxcmpl_put(phba, pring, piocb); __lpfc_sli_issue_iocb_s4() 8811 * @pring: Pointer to driver SLI ring object. 8826 struct lpfc_sli_ring *pring; lpfc_sli_issue_iocb() local 8838 pring = &phba->sli.ring[ring_number]; lpfc_sli_issue_iocb() 8839 spin_lock_irqsave(&pring->ring_lock, iflags); lpfc_sli_issue_iocb() 8841 spin_unlock_irqrestore(&pring->ring_lock, iflags); lpfc_sli_issue_iocb() 8894 struct lpfc_sli_ring *pring; lpfc_extra_ring_setup() local 8901 pring = &psli->ring[psli->fcp_ring]; lpfc_extra_ring_setup() 8902 pring->sli.sli3.numCiocb -= SLI2_IOCB_CMD_R1XTRA_ENTRIES; lpfc_extra_ring_setup() 8903 pring->sli.sli3.numRiocb -= SLI2_IOCB_RSP_R1XTRA_ENTRIES; lpfc_extra_ring_setup() 8904 pring->sli.sli3.numCiocb -= SLI2_IOCB_CMD_R3XTRA_ENTRIES; lpfc_extra_ring_setup() 8905 pring->sli.sli3.numRiocb -= SLI2_IOCB_RSP_R3XTRA_ENTRIES; lpfc_extra_ring_setup() 8908 pring = &psli->ring[psli->extra_ring]; lpfc_extra_ring_setup() 8910 pring->sli.sli3.numCiocb += SLI2_IOCB_CMD_R1XTRA_ENTRIES; lpfc_extra_ring_setup() 8911 pring->sli.sli3.numRiocb += SLI2_IOCB_RSP_R1XTRA_ENTRIES; lpfc_extra_ring_setup() 8912 pring->sli.sli3.numCiocb += SLI2_IOCB_CMD_R3XTRA_ENTRIES; lpfc_extra_ring_setup() 8913 pring->sli.sli3.numRiocb += SLI2_IOCB_RSP_R3XTRA_ENTRIES; lpfc_extra_ring_setup() 8916 pring->iotag_max = 4096; lpfc_extra_ring_setup() 8917 pring->num_mask = 1; lpfc_extra_ring_setup() 8918 pring->prt[0].profile = 0; /* Mask 0 */ lpfc_extra_ring_setup() 8919 pring->prt[0].rctl = phba->cfg_multi_ring_rctl; lpfc_extra_ring_setup() 8920 pring->prt[0].type = phba->cfg_multi_ring_type; lpfc_extra_ring_setup() 8921 pring->prt[0].lpfc_sli_rcv_unsol_event = NULL; lpfc_extra_ring_setup() 9021 * @pring: Pointer to driver SLI ring object. 9033 struct lpfc_sli_ring * pring, struct lpfc_iocbq * iocbq) lpfc_sli_async_event_handler() 9081 pring->ringno, icmd->un.asyncstat.evt_code, lpfc_sli_async_event_handler() 9108 struct lpfc_sli_ring *pring; lpfc_sli_setup() local 9123 pring = &psli->ring[i]; lpfc_sli_setup() 9127 pring->sli.sli3.numCiocb = SLI2_IOCB_CMD_R0_ENTRIES; lpfc_sli_setup() 9128 pring->sli.sli3.numRiocb = SLI2_IOCB_RSP_R0_ENTRIES; lpfc_sli_setup() 9129 pring->sli.sli3.numCiocb += lpfc_sli_setup() 9131 pring->sli.sli3.numRiocb += lpfc_sli_setup() 9133 pring->sli.sli3.numCiocb += lpfc_sli_setup() 9135 pring->sli.sli3.numRiocb += lpfc_sli_setup() 9137 pring->sli.sli3.sizeCiocb = (phba->sli_rev == 3) ? lpfc_sli_setup() 9140 pring->sli.sli3.sizeRiocb = (phba->sli_rev == 3) ? lpfc_sli_setup() 9143 pring->iotag_ctr = 0; lpfc_sli_setup() 9144 pring->iotag_max = lpfc_sli_setup() 9146 pring->fast_iotag = pring->iotag_max; lpfc_sli_setup() 9147 pring->num_mask = 0; lpfc_sli_setup() 9151 pring->sli.sli3.numCiocb = SLI2_IOCB_CMD_R1_ENTRIES; lpfc_sli_setup() 9152 pring->sli.sli3.numRiocb = SLI2_IOCB_RSP_R1_ENTRIES; lpfc_sli_setup() 9153 pring->sli.sli3.sizeCiocb = (phba->sli_rev == 3) ? lpfc_sli_setup() 9156 pring->sli.sli3.sizeRiocb = (phba->sli_rev == 3) ? lpfc_sli_setup() 9159 pring->iotag_max = phba->cfg_hba_queue_depth; lpfc_sli_setup() 9160 pring->num_mask = 0; lpfc_sli_setup() 9164 pring->sli.sli3.numCiocb = SLI2_IOCB_CMD_R2_ENTRIES; lpfc_sli_setup() 9165 pring->sli.sli3.numRiocb = SLI2_IOCB_RSP_R2_ENTRIES; lpfc_sli_setup() 9166 pring->sli.sli3.sizeCiocb = (phba->sli_rev == 3) ? lpfc_sli_setup() 9169 pring->sli.sli3.sizeRiocb = (phba->sli_rev == 3) ? lpfc_sli_setup() 9172 pring->fast_iotag = 0; lpfc_sli_setup() 9173 pring->iotag_ctr = 0; lpfc_sli_setup() 9174 pring->iotag_max = 4096; lpfc_sli_setup() 9175 pring->lpfc_sli_rcv_async_status = lpfc_sli_setup() 9177 pring->num_mask = LPFC_MAX_RING_MASK; lpfc_sli_setup() 9178 pring->prt[0].profile = 0; /* Mask 0 */ lpfc_sli_setup() 9179 pring->prt[0].rctl = FC_RCTL_ELS_REQ; lpfc_sli_setup() 9180 pring->prt[0].type = FC_TYPE_ELS; lpfc_sli_setup() 9181 pring->prt[0].lpfc_sli_rcv_unsol_event = lpfc_sli_setup() 9183 pring->prt[1].profile = 0; /* Mask 1 */ lpfc_sli_setup() 9184 pring->prt[1].rctl = FC_RCTL_ELS_REP; lpfc_sli_setup() 9185 pring->prt[1].type = FC_TYPE_ELS; lpfc_sli_setup() 9186 pring->prt[1].lpfc_sli_rcv_unsol_event = lpfc_sli_setup() 9188 pring->prt[2].profile = 0; /* Mask 2 */ lpfc_sli_setup() 9190 pring->prt[2].rctl = FC_RCTL_DD_UNSOL_CTL; lpfc_sli_setup() 9192 pring->prt[2].type = FC_TYPE_CT; lpfc_sli_setup() 9193 pring->prt[2].lpfc_sli_rcv_unsol_event = lpfc_sli_setup() 9195 pring->prt[3].profile = 0; /* Mask 3 */ lpfc_sli_setup() 9197 pring->prt[3].rctl = FC_RCTL_DD_SOL_CTL; lpfc_sli_setup() 9199 pring->prt[3].type = FC_TYPE_CT; lpfc_sli_setup() 9200 pring->prt[3].lpfc_sli_rcv_unsol_event = lpfc_sli_setup() 9204 totiocbsize += (pring->sli.sli3.numCiocb * lpfc_sli_setup() 9205 pring->sli.sli3.sizeCiocb) + lpfc_sli_setup() 9206 (pring->sli.sli3.numRiocb * pring->sli.sli3.sizeRiocb); lpfc_sli_setup() 9236 struct lpfc_sli_ring *pring; lpfc_sli_queue_setup() local 9245 pring = &psli->ring[i]; lpfc_sli_queue_setup() 9246 pring->ringno = i; lpfc_sli_queue_setup() 9247 pring->sli.sli3.next_cmdidx = 0; lpfc_sli_queue_setup() 9248 pring->sli.sli3.local_getidx = 0; lpfc_sli_queue_setup() 9249 pring->sli.sli3.cmdidx = 0; lpfc_sli_queue_setup() 9250 pring->flag = 0; lpfc_sli_queue_setup() 9251 INIT_LIST_HEAD(&pring->txq); lpfc_sli_queue_setup() 9252 INIT_LIST_HEAD(&pring->txcmplq); lpfc_sli_queue_setup() 9253 INIT_LIST_HEAD(&pring->iocb_continueq); lpfc_sli_queue_setup() 9254 INIT_LIST_HEAD(&pring->iocb_continue_saveq); lpfc_sli_queue_setup() 9255 INIT_LIST_HEAD(&pring->postbufq); lpfc_sli_queue_setup() 9256 spin_lock_init(&pring->ring_lock); lpfc_sli_queue_setup() 9331 struct lpfc_sli_ring *pring; lpfc_sli_host_down() local 9341 pring = &psli->ring[i]; lpfc_sli_host_down() 9342 prev_pring_flag = pring->flag; lpfc_sli_host_down() 9344 if (pring->ringno == LPFC_ELS_RING) { lpfc_sli_host_down() 9345 pring->flag |= LPFC_DEFERRED_RING_EVENT; lpfc_sli_host_down() 9353 list_for_each_entry_safe(iocb, next_iocb, &pring->txq, list) { lpfc_sli_host_down() 9360 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, lpfc_sli_host_down() 9364 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_sli_host_down() 9367 pring->flag = prev_pring_flag; lpfc_sli_host_down() 9398 struct lpfc_sli_ring *pring; lpfc_sli_hba_down() local 9412 pring = &psli->ring[i]; lpfc_sli_hba_down() 9414 if (pring->ringno == LPFC_ELS_RING) { lpfc_sli_hba_down() 9415 pring->flag |= LPFC_DEFERRED_RING_EVENT; lpfc_sli_hba_down() 9424 list_splice_init(&pring->txq, &completions); lpfc_sli_hba_down() 9515 * @pring: Pointer to driver SLI ring object. 9523 lpfc_sli_ringpostbuf_put(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_ringpostbuf_put() argument 9529 list_add_tail(&mp->list, &pring->postbufq); lpfc_sli_ringpostbuf_put() 9530 pring->postbufq_cnt++; lpfc_sli_ringpostbuf_put() 9563 * @pring: Pointer to driver SLI ring object. 9566 * Buffers posted using CMD_QUE_XRI64_CX iocb are in pring->postbufq 9569 * This function searches the pring->postbufq list using the tag 9576 lpfc_sli_ring_taggedbuf_get(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_ring_taggedbuf_get() argument 9580 struct list_head *slp = &pring->postbufq; lpfc_sli_ring_taggedbuf_get() 9584 list_for_each_entry_safe(mp, next_mp, &pring->postbufq, list) { lpfc_sli_ring_taggedbuf_get() 9587 pring->postbufq_cnt--; lpfc_sli_ring_taggedbuf_get() 9597 pring->ringno, (unsigned long) tag, lpfc_sli_ring_taggedbuf_get() 9598 slp->next, slp->prev, pring->postbufq_cnt); lpfc_sli_ring_taggedbuf_get() 9606 * @pring: Pointer to driver SLI ring object. 9620 lpfc_sli_ringpostbuf_get(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_ringpostbuf_get() argument 9624 struct list_head *slp = &pring->postbufq; lpfc_sli_ringpostbuf_get() 9628 list_for_each_entry_safe(mp, next_mp, &pring->postbufq, list) { lpfc_sli_ringpostbuf_get() 9631 pring->postbufq_cnt--; lpfc_sli_ringpostbuf_get() 9641 pring->ringno, (unsigned long long)phys, lpfc_sli_ringpostbuf_get() 9642 slp->next, slp->prev, pring->postbufq_cnt); lpfc_sli_ringpostbuf_get() 9734 * @pring: Pointer to driver SLI ring object. 9744 lpfc_sli_abort_iotag_issue(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_abort_iotag_issue() argument 9811 lpfc_sli_calc_ring(phba, pring->ringno, abtsiocbp); lpfc_sli_abort_iotag_issue() 9814 pring = &phba->sli.ring[ring_number]; lpfc_sli_abort_iotag_issue() 9816 spin_lock_irqsave(&pring->ring_lock, iflags); lpfc_sli_abort_iotag_issue() 9817 retval = __lpfc_sli_issue_iocb(phba, pring->ringno, lpfc_sli_abort_iotag_issue() 9819 spin_unlock_irqrestore(&pring->ring_lock, iflags); lpfc_sli_abort_iotag_issue() 9821 retval = __lpfc_sli_issue_iocb(phba, pring->ringno, lpfc_sli_abort_iotag_issue() 9839 * @pring: Pointer to driver SLI ring object. 9850 lpfc_sli_issue_abort_iotag(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_sli_issue_abort_iotag() argument 9873 (pring->ringno == LPFC_ELS_RING)) { lpfc_sli_issue_abort_iotag() 9882 retval = lpfc_sli_abort_iotag_issue(phba, pring, cmdiocb); lpfc_sli_issue_abort_iotag() 9903 struct lpfc_sli_ring *pring; lpfc_sli_hba_iocb_abort() local 9907 pring = &psli->ring[i]; lpfc_sli_hba_iocb_abort() 9908 lpfc_sli_abort_iocb_ring(phba, pring); lpfc_sli_hba_iocb_abort() 10044 * @pring: Pointer to driver SLI ring object. 10063 lpfc_sli_abort_iocb(struct lpfc_vport *vport, struct lpfc_sli_ring *pring, lpfc_sli_abort_iocb() argument 10122 ret_val = lpfc_sli_issue_iocb(phba, pring->ringno, lpfc_sli_abort_iocb() 10137 * @pring: Pointer to driver SLI ring object. 10157 lpfc_sli_abort_taskmgmt(struct lpfc_vport *vport, struct lpfc_sli_ring *pring, lpfc_sli_abort_taskmgmt() argument 10246 ret_val = __lpfc_sli_issue_iocb(phba, pring->ringno, lpfc_sli_abort_taskmgmt() 10354 * @pring: Pointer to sli ring. 10401 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_sli_issue_iocb_wait() local 10469 list_for_each_entry(iocb, &pring->txq, list) { lpfc_sli_issue_iocb_wait() 10472 list_for_each_entry(iocb, &pring->txcmplq, list) { lpfc_sli_issue_iocb_wait() 11570 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_sli4_els_wcqe_to_rspiocbq() local 11576 spin_lock_irqsave(&pring->ring_lock, iflags); lpfc_sli4_els_wcqe_to_rspiocbq() 11577 pring->stats.iocb_event++; lpfc_sli4_els_wcqe_to_rspiocbq() 11579 cmdiocbq = lpfc_sli_iocbq_lookup_by_tag(phba, pring, lpfc_sli4_els_wcqe_to_rspiocbq() 11581 spin_unlock_irqrestore(&pring->ring_lock, iflags); lpfc_sli4_els_wcqe_to_rspiocbq() 11796 struct lpfc_sli_ring *pring = cq->pring; lpfc_sli4_sp_handle_els_wcqe() local 11804 if (!list_empty(&pring->txq)) lpfc_sli4_sp_handle_els_wcqe() 11806 if (!list_empty(&pring->txcmplq)) lpfc_sli4_sp_handle_els_wcqe() 12140 struct lpfc_sli_ring *pring = cq->pring; lpfc_sli4_fp_handle_fcp_wcqe() local 12168 spin_lock_irqsave(&pring->ring_lock, iflags); lpfc_sli4_fp_handle_fcp_wcqe() 12169 pring->stats.iocb_event++; lpfc_sli4_fp_handle_fcp_wcqe() 12170 cmdiocbq = lpfc_sli_iocbq_lookup_by_tag(phba, pring, lpfc_sli4_fp_handle_fcp_wcqe() 12172 spin_unlock_irqrestore(&pring->ring_lock, iflags); lpfc_sli4_fp_handle_fcp_wcqe() 16966 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_drain_txq() local 16974 spin_lock_irqsave(&pring->ring_lock, iflags); lpfc_drain_txq() 16975 list_for_each_entry(piocbq, &pring->txq, list) { lpfc_drain_txq() 16979 if (txq_cnt > pring->txq_max) lpfc_drain_txq() 16980 pring->txq_max = txq_cnt; lpfc_drain_txq() 16982 spin_unlock_irqrestore(&pring->ring_lock, iflags); lpfc_drain_txq() 16984 while (!list_empty(&pring->txq)) { lpfc_drain_txq() 16985 spin_lock_irqsave(&pring->ring_lock, iflags); lpfc_drain_txq() 16987 piocbq = lpfc_sli_ringtx_get(phba, pring); lpfc_drain_txq() 16989 spin_unlock_irqrestore(&pring->ring_lock, iflags); lpfc_drain_txq() 16997 __lpfc_sli_ringtx_put(phba, pring, piocbq); lpfc_drain_txq() 16998 spin_unlock_irqrestore(&pring->ring_lock, iflags); lpfc_drain_txq() 17015 lpfc_sli_ringtxcmpl_put(phba, pring, piocbq); lpfc_drain_txq() 17026 spin_unlock_irqrestore(&pring->ring_lock, iflags); lpfc_drain_txq() 2405 lpfc_sli_get_buff(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, uint32_t tag) lpfc_sli_get_buff() argument 2644 lpfc_sli_iocbq_lookup(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, struct lpfc_iocbq *prspiocb) lpfc_sli_iocbq_lookup() argument 2683 lpfc_sli_iocbq_lookup_by_tag(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, uint16_t iotag) lpfc_sli_iocbq_lookup_by_tag() argument 2961 lpfc_sli_handle_fast_ring_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, uint32_t mask) lpfc_sli_handle_fast_ring_event() argument 3323 lpfc_sli_handle_slow_ring_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, uint32_t mask) lpfc_sli_handle_slow_ring_event() argument 3341 lpfc_sli_handle_slow_ring_event_s3(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, uint32_t mask) lpfc_sli_handle_slow_ring_event_s3() argument 3477 lpfc_sli_handle_slow_ring_event_s4(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, uint32_t mask) lpfc_sli_handle_slow_ring_event_s4() argument 9032 lpfc_sli_async_event_handler(struct lpfc_hba * phba, struct lpfc_sli_ring * pring, struct lpfc_iocbq * iocbq) lpfc_sli_async_event_handler() argument
|
H A D | lpfc_mbox.c | 947 struct lpfc_sli_ring *pring; lpfc_config_pcb_setup() local 957 pring = &psli->ring[i]; lpfc_config_pcb_setup() 959 pring->sli.sli3.sizeCiocb = lpfc_config_pcb_setup() 962 pring->sli.sli3.sizeRiocb = lpfc_config_pcb_setup() 967 if ((pring->sli.sli3.numCiocb == 0) || lpfc_config_pcb_setup() 968 (pring->sli.sli3.numRiocb == 0)) { lpfc_config_pcb_setup() 975 pring->sli.sli3.cmdringaddr = NULL; lpfc_config_pcb_setup() 976 pring->sli.sli3.rspringaddr = NULL; lpfc_config_pcb_setup() 980 pring->sli.sli3.cmdringaddr = (void *)&phba->IOCBs[iocbCnt]; lpfc_config_pcb_setup() 981 pcbp->rdsc[i].cmdEntries = pring->sli.sli3.numCiocb; lpfc_config_pcb_setup() 988 iocbCnt += pring->sli.sli3.numCiocb; lpfc_config_pcb_setup() 991 pring->sli.sli3.rspringaddr = (void *) &phba->IOCBs[iocbCnt]; lpfc_config_pcb_setup() 993 pcbp->rdsc[i].rspEntries = pring->sli.sli3.numRiocb; lpfc_config_pcb_setup() 999 iocbCnt += pring->sli.sli3.numRiocb; lpfc_config_pcb_setup() 1210 struct lpfc_sli_ring *pring; lpfc_config_ring() local 1220 pring = &psli->ring[ring]; lpfc_config_ring() 1221 mb->un.varCfgRing.numMask = pring->num_mask; lpfc_config_ring() 1226 if (pring->prt[0].profile) { lpfc_config_ring() 1227 mb->un.varCfgRing.profile = pring->prt[0].profile; lpfc_config_ring() 1232 for (i = 0; i < pring->num_mask; i++) { lpfc_config_ring() 1233 mb->un.varCfgRing.rrRegs[i].rval = pring->prt[i].rctl; lpfc_config_ring() 1238 mb->un.varCfgRing.rrRegs[i].tval = pring->prt[i].type; lpfc_config_ring()
|
H A D | lpfc_bsg.c | 895 * @pring: 902 lpfc_bsg_ct_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_bsg_ct_unsol_event() argument 941 dmabuf = lpfc_sli_ringpostbuf_get(phba, pring, dma_addr); lpfc_bsg_ct_unsol_event() 949 lpfc_sli_ringpostbuf_put(phba, pring, dmabuf); lpfc_bsg_ct_unsol_event() 1024 pring, dma_addr); lpfc_bsg_ct_unsol_event() 1046 lpfc_sli_ringpostbuf_put(phba, pring, lpfc_bsg_ct_unsol_event() 1067 pring, lpfc_bsg_ct_unsol_event() 1075 pring, lpfc_bsg_ct_unsol_event() 1685 struct lpfc_sli_ring *pring; lpfc_bsg_diag_mode_enter() local 1692 pring = &psli->ring[LPFC_FCP_RING]; lpfc_bsg_diag_mode_enter() 1693 if (!pring) lpfc_bsg_diag_mode_enter() 1713 while (!list_empty(&pring->txcmplq)) { lpfc_bsg_diag_mode_enter() 2845 struct lpfc_sli_ring *pring = &psli->ring[LPFC_ELS_RING]; lpfcdiag_loop_post_rxbufs() local 2933 lpfc_sli_ringpostbuf_put(phba, pring, mp[0]); lpfcdiag_loop_post_rxbufs() 2935 lpfc_sli_ringpostbuf_put(phba, pring, mp[1]); lpfcdiag_loop_post_rxbufs() 5286 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_bsg_timeout() local 5327 list_for_each_entry_safe(check_iocb, next_iocb, &pring->txq, lpfc_bsg_timeout() 5335 lpfc_sli_issue_abort_iotag(phba, pring, cmdiocb); lpfc_bsg_timeout() 5364 list_for_each_entry_safe(check_iocb, next_iocb, &pring->txq, lpfc_bsg_timeout() 5372 lpfc_sli_issue_abort_iotag(phba, pring, cmdiocb); lpfc_bsg_timeout()
|
H A D | lpfc_init.c | 885 struct lpfc_sli_ring *pring; lpfc_hba_free_post_buf() local 894 pring = &psli->ring[LPFC_ELS_RING]; lpfc_hba_free_post_buf() 896 list_splice_init(&pring->postbufq, &buflist); lpfc_hba_free_post_buf() 908 pring->postbufq_cnt -= count; lpfc_hba_free_post_buf() 927 struct lpfc_sli_ring *pring; lpfc_hba_clean_txcmplq() local 932 pring = &psli->ring[i]; lpfc_hba_clean_txcmplq() 934 spin_lock_irq(&pring->ring_lock); lpfc_hba_clean_txcmplq() 940 list_splice_init(&pring->txcmplq, &completions); lpfc_hba_clean_txcmplq() 941 pring->txcmplq_cnt = 0; lpfc_hba_clean_txcmplq() 944 spin_unlock_irq(&pring->ring_lock); lpfc_hba_clean_txcmplq() 951 lpfc_sli_abort_iocb_ring(phba, pring); lpfc_hba_clean_txcmplq() 994 struct lpfc_sli_ring *pring; lpfc_hba_down_post_s4() local 998 pring = &psli->ring[LPFC_ELS_RING]; lpfc_hba_down_post_s4() 1016 spin_lock(&pring->ring_lock); lpfc_hba_down_post_s4() 1019 spin_unlock(&pring->ring_lock); lpfc_hba_down_post_s4() 2276 * @pring: pointer to a IOCB ring. 2286 lpfc_post_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, int cnt) lpfc_post_buffer() argument 2292 cnt += pring->missbufcnt; lpfc_post_buffer() 2299 pring->missbufcnt = cnt; lpfc_post_buffer() 2312 pring->missbufcnt = cnt; lpfc_post_buffer() 2328 pring->missbufcnt = cnt; lpfc_post_buffer() 2353 if (lpfc_sli_issue_iocb(phba, pring->ringno, iocb, 0) == lpfc_post_buffer() 2364 pring->missbufcnt = cnt; lpfc_post_buffer() 2367 lpfc_sli_ringpostbuf_put(phba, pring, mp1); lpfc_post_buffer() 2369 lpfc_sli_ringpostbuf_put(phba, pring, mp2); lpfc_post_buffer() 2371 pring->missbufcnt = 0; lpfc_post_buffer() 3099 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_sli4_xri_sgl_update() local 3140 spin_lock(&pring->ring_lock); lpfc_sli4_xri_sgl_update() 3142 spin_unlock(&pring->ring_lock); lpfc_sli4_xri_sgl_update() 3152 spin_lock(&pring->ring_lock); lpfc_sli4_xri_sgl_update() 3154 spin_unlock(&pring->ring_lock); lpfc_sli4_xri_sgl_update() 3167 spin_lock(&pring->ring_lock); lpfc_sli4_xri_sgl_update() 3169 spin_unlock(&pring->ring_lock); lpfc_sli4_xri_sgl_update() 5824 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_free_els_sgl_list() local 5828 spin_lock(&pring->ring_lock); lpfc_free_els_sgl_list() 5830 spin_unlock(&pring->ring_lock); lpfc_free_els_sgl_list() 7478 struct lpfc_sli_ring *pring; lpfc_sli4_queue_setup() local 7635 pring = &psli->ring[MAX_SLI3_CONFIGURED_RINGS + fcp_wqidx]; lpfc_sli4_queue_setup() 7636 pring->sli.sli4.wqp = (void *)phba->sli4_hba.fcp_wq[fcp_wqidx]; lpfc_sli4_queue_setup() 7637 phba->sli4_hba.fcp_cq[fcp_wqidx]->pring = pring; lpfc_sli4_queue_setup() 7732 pring = &psli->ring[LPFC_ELS_RING]; lpfc_sli4_queue_setup() 7733 pring->sli.sli4.wqp = (void *)phba->sli4_hba.els_wq; lpfc_sli4_queue_setup() 7734 phba->sli4_hba.els_cq->pring = pring; lpfc_sli4_queue_setup() 11174 phba->sli4_hba.oas_cq->pring = &psli->ring[LPFC_FCP_OAS_RING]; lpfc_fof_queue_setup()
|
H A D | lpfc_hbadisc.c | 605 struct lpfc_sli_ring *pring; lpfc_work_done() local 686 pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_work_done() 690 (pring->flag & LPFC_DEFERRED_RING_EVENT) || lpfc_work_done() 692 if (pring->flag & LPFC_STOP_IOCB_EVENT) { lpfc_work_done() 693 pring->flag |= LPFC_DEFERRED_RING_EVENT; lpfc_work_done() 698 pring->flag &= ~LPFC_DEFERRED_RING_EVENT; lpfc_work_done() 699 lpfc_sli_handle_slow_ring_event(phba, pring, lpfc_work_done() 705 (!list_empty(&pring->txq))) lpfc_work_done() 4383 struct lpfc_sli_ring *pring, lpfc_check_sli_ndlp() 4394 if (pring->ringno == LPFC_ELS_RING) { lpfc_check_sli_ndlp() 4406 } else if (pring->ringno == psli->extra_ring) { lpfc_check_sli_ndlp() 4408 } else if (pring->ringno == psli->fcp_ring) { lpfc_check_sli_ndlp() 4417 } else if (pring->ringno == psli->next_ring) { lpfc_check_sli_ndlp() 4432 struct lpfc_sli_ring *pring; lpfc_no_rpi() local 4446 pring = &psli->ring[i]; lpfc_no_rpi() 4449 list_for_each_entry_safe(iocb, next_iocb, &pring->txq, lpfc_no_rpi() 4455 if ((lpfc_check_sli_ndlp(phba, pring, iocb, lpfc_no_rpi() 5196 struct lpfc_sli_ring *pring; lpfc_free_tx() local 5199 pring = &psli->ring[LPFC_ELS_RING]; lpfc_free_tx() 5205 list_for_each_entry_safe(iocb, next_iocb, &pring->txq, list) { lpfc_free_tx() 5218 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) { lpfc_free_tx() 5225 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_free_tx() 4382 lpfc_check_sli_ndlp(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, struct lpfc_iocbq *iocb, struct lpfc_nodelist *ndlp) lpfc_check_sli_ndlp() argument
|
H A D | lpfc_nportdisc.c | 208 struct lpfc_sli_ring *pring = &psli->ring[LPFC_ELS_RING]; lpfc_els_abort() local 227 spin_lock(&pring->ring_lock); lpfc_els_abort() 228 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) { lpfc_els_abort() 230 if (lpfc_check_sli_ndlp(phba, pring, iocb, ndlp)) lpfc_els_abort() 234 spin_unlock(&pring->ring_lock); lpfc_els_abort() 241 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_els_abort() 250 spin_lock(&pring->ring_lock); lpfc_els_abort() 252 list_for_each_entry_safe(iocb, next_iocb, &pring->txq, list) { lpfc_els_abort() 254 if (lpfc_check_sli_ndlp(phba, pring, iocb, ndlp)) { lpfc_els_abort() 261 spin_unlock(&pring->ring_lock); lpfc_els_abort()
|
H A D | lpfc_els.c | 1309 struct lpfc_sli_ring *pring; lpfc_els_abort_flogi() local 1319 pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_els_abort_flogi() 1326 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) { lpfc_els_abort_flogi() 1332 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_els_abort_flogi() 6874 struct lpfc_sli_ring *pring; lpfc_els_timeout_handler() local 6886 pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_els_timeout_handler() 6891 spin_lock(&pring->ring_lock); lpfc_els_timeout_handler() 6895 spin_unlock(&pring->ring_lock); lpfc_els_timeout_handler() 6900 list_for_each_entry_safe(piocb, tmp_iocb, &pring->txcmplq, list) { lpfc_els_timeout_handler() 6940 spin_unlock(&pring->ring_lock); lpfc_els_timeout_handler() 6951 lpfc_sli_issue_abort_iotag(phba, pring, piocb); lpfc_els_timeout_handler() 6986 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_els_flush_cmd() local 6999 spin_lock(&pring->ring_lock); lpfc_els_flush_cmd() 7001 list_for_each_entry_safe(piocb, tmp_iocb, &pring->txcmplq, list) { lpfc_els_flush_cmd() 7010 spin_unlock(&pring->ring_lock); lpfc_els_flush_cmd() 7016 lpfc_sli_issue_abort_iotag(phba, pring, piocb); lpfc_els_flush_cmd() 7026 spin_lock(&pring->ring_lock); lpfc_els_flush_cmd() 7028 list_for_each_entry_safe(piocb, tmp_iocb, &pring->txq, list) { lpfc_els_flush_cmd() 7049 spin_unlock(&pring->ring_lock); lpfc_els_flush_cmd() 7236 * @pring: pointer to a SLI ring. 7248 lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_els_unsol_buffer() argument 7266 lpfc_post_buffer(phba, pring, 1); lpfc_els_unsol_buffer() 7647 * @pring: pointer to a SLI ring. 7657 lpfc_els_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_els_unsol_event() argument 7678 lpfc_post_buffer(phba, pring, 0); lpfc_els_unsol_event() 7706 elsiocb->context2 = lpfc_sli_ringpostbuf_get(phba, pring, lpfc_els_unsol_event() 7710 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); lpfc_els_unsol_event() 7724 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); lpfc_els_unsol_event() 8737 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_fabric_abort_nport() local 8742 if ((lpfc_check_sli_ndlp(phba, pring, piocb, ndlp))) { lpfc_fabric_abort_nport() 8823 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_sli4_els_xri_aborted() local 8833 spin_lock(&pring->ring_lock); lpfc_sli4_els_xri_aborted() 8837 spin_unlock(&pring->ring_lock); lpfc_sli4_els_xri_aborted() 8845 if (!(list_empty(&pring->txq))) lpfc_sli4_els_xri_aborted() 8856 spin_lock(&pring->ring_lock); lpfc_sli4_els_xri_aborted() 8859 spin_unlock(&pring->ring_lock); lpfc_sli4_els_xri_aborted() 8864 spin_unlock(&pring->ring_lock); lpfc_sli4_els_xri_aborted()
|
H A D | lpfc_ct.c | 90 lpfc_ct_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, lpfc_ct_unsol_event() argument 102 if (lpfc_bsg_ct_unsol_event(phba, pring, piocbq) == 0) lpfc_ct_unsol_event() 113 lpfc_post_buffer(phba, pring, 2); lpfc_ct_unsol_event() 155 mp = lpfc_sli_ringpostbuf_get(phba, pring, lpfc_ct_unsol_event() 161 lpfc_post_buffer(phba, pring, i); lpfc_ct_unsol_event()
|
H A D | lpfc_debugfs.c | 456 struct lpfc_sli_ring *pring; lpfc_debugfs_dumpHostSlim_data() local 489 pring = &psli->ring[i]; lpfc_debugfs_dumpHostSlim_data() 493 i, pgpp->cmdGetInx, pring->sli.sli3.numCiocb, lpfc_debugfs_dumpHostSlim_data() 494 pring->sli.sli3.next_cmdidx, lpfc_debugfs_dumpHostSlim_data() 495 pring->sli.sli3.local_getidx, lpfc_debugfs_dumpHostSlim_data() 496 pring->flag, pgpp->rspPutInx, lpfc_debugfs_dumpHostSlim_data() 497 pring->sli.sli3.numRiocb); lpfc_debugfs_dumpHostSlim_data()
|
H A D | lpfc_sli4.h | 145 struct lpfc_sli_ring *pring; /* ptr to io ring associated with q */ member in struct:lpfc_queue
|
H A D | lpfc.h | 582 (struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
|
H A D | lpfc_attr.c | 696 struct lpfc_sli_ring *pring; lpfc_do_offline() local 720 pring = &psli->ring[i]; lpfc_do_offline() 721 while (!list_empty(&pring->txcmplq)) { lpfc_do_offline()
|
H A D | lpfc_scsi.c | 559 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; lpfc_sli4_fcp_xri_aborted() local 601 if (!list_empty(&pring->txq)) lpfc_sli4_fcp_xri_aborted()
|
/linux-4.4.14/drivers/net/wireless/ath/wil6210/ |
H A D | pmc.c | 85 /* Allocate pring buffer and descriptors. wil_pmc_alloc() 95 "%s: allocated pring %p => %pad. %zd x %d = total %zd bytes\n", wil_pmc_alloc() 103 wil_err(wil, "%s: ERROR allocating pmc pring\n", __func__); wil_pmc_alloc() 176 wil_err(wil, "%s: exit on error: Releasing pring...\n", __func__); wil_pmc_alloc() 240 wil_dbg_misc(wil, "%s: free pring va %p\n", wil_pmc_free()
|
/linux-4.4.14/drivers/net/ethernet/mellanox/mlx4/ |
H A D | mlx4_en.h | 769 struct mlx4_en_tx_ring **pring, 773 struct mlx4_en_tx_ring **pring); 782 struct mlx4_en_rx_ring **pring, 785 struct mlx4_en_rx_ring **pring,
|
H A D | en_rx.c | 353 struct mlx4_en_rx_ring **pring, mlx4_en_create_rx_ring() 409 *pring = ring; mlx4_en_create_rx_ring() 419 *pring = NULL; mlx4_en_create_rx_ring() 511 struct mlx4_en_rx_ring **pring, mlx4_en_destroy_rx_ring() 515 struct mlx4_en_rx_ring *ring = *pring; mlx4_en_destroy_rx_ring() 522 *pring = NULL; mlx4_en_destroy_rx_ring() 352 mlx4_en_create_rx_ring(struct mlx4_en_priv *priv, struct mlx4_en_rx_ring **pring, u32 size, u16 stride, int node) mlx4_en_create_rx_ring() argument 510 mlx4_en_destroy_rx_ring(struct mlx4_en_priv *priv, struct mlx4_en_rx_ring **pring, u32 size, u16 stride) mlx4_en_destroy_rx_ring() argument
|
H A D | en_tx.c | 49 struct mlx4_en_tx_ring **pring, u32 size, mlx4_en_create_tx_ring() 152 *pring = ring; mlx4_en_create_tx_ring() 169 *pring = NULL; mlx4_en_create_tx_ring() 174 struct mlx4_en_tx_ring **pring) mlx4_en_destroy_tx_ring() 177 struct mlx4_en_tx_ring *ring = *pring; mlx4_en_destroy_tx_ring() 192 *pring = NULL; mlx4_en_destroy_tx_ring() 48 mlx4_en_create_tx_ring(struct mlx4_en_priv *priv, struct mlx4_en_tx_ring **pring, u32 size, u16 stride, int node, int queue_index) mlx4_en_create_tx_ring() argument 173 mlx4_en_destroy_tx_ring(struct mlx4_en_priv *priv, struct mlx4_en_tx_ring **pring) mlx4_en_destroy_tx_ring() argument
|