Lines Matching refs:phba
56 static int lpfc_issue_fabric_iocb(struct lpfc_hba *phba,
87 struct lpfc_hba *phba = vport->phba; in lpfc_els_chk_latt() local
91 phba->link_state == LPFC_LINK_DOWN || in lpfc_els_chk_latt()
92 phba->sli_rev > LPFC_SLI_REV3) in lpfc_els_chk_latt()
96 if (lpfc_readl(phba->HAregaddr, &ha_copy)) in lpfc_els_chk_latt()
106 phba->pport->port_state); in lpfc_els_chk_latt()
118 if (phba->link_state != LPFC_CLEAR_LA) in lpfc_els_chk_latt()
119 lpfc_issue_clear_la(phba, vport); in lpfc_els_chk_latt()
158 struct lpfc_hba *phba = vport->phba; in lpfc_prep_els_iocb() local
165 if (!lpfc_is_link_up(phba)) in lpfc_prep_els_iocb()
169 elsiocb = lpfc_sli_get_iocbq(phba); in lpfc_prep_els_iocb()
179 (phba->hba_flag & HBA_FIP_SUPPORT) && in lpfc_prep_els_iocb()
209 pcmd->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &pcmd->phys); in lpfc_prep_els_iocb()
219 prsp->virt = lpfc_mbuf_alloc(phba, MEM_PRI, in lpfc_prep_els_iocb()
230 pbuflist->virt = lpfc_mbuf_alloc(phba, MEM_PRI, in lpfc_prep_els_iocb()
248 icmd->ulpTimeout = phba->fc_ratov; in lpfc_prep_els_iocb()
250 icmd->ulpTimeout = phba->fc_ratov * 2; in lpfc_prep_els_iocb()
268 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) || in lpfc_prep_els_iocb()
269 ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_prep_els_iocb()
276 icmd->ulpContext = phba->vpi_ids[vport->vpi]; in lpfc_prep_els_iocb()
311 elsiocb->drvrTimeout = (phba->fc_ratov << 1) + LPFC_DRVR_TIMEOUT; in lpfc_prep_els_iocb()
339 lpfc_mbuf_free(phba, prsp->virt, prsp->phys); in lpfc_prep_els_iocb()
343 lpfc_mbuf_free(phba, pcmd->virt, pcmd->phys); in lpfc_prep_els_iocb()
348 lpfc_sli_release_iocbq(phba, elsiocb); in lpfc_prep_els_iocb()
371 struct lpfc_hba *phba = vport->phba; in lpfc_issue_fabric_reglogin() local
379 sp = &phba->fc_fabparam; in lpfc_issue_fabric_reglogin()
386 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_fabric_reglogin()
393 lpfc_config_link(phba, mbox); in lpfc_issue_fabric_reglogin()
397 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_issue_fabric_reglogin()
403 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_fabric_reglogin()
408 rc = lpfc_reg_rpi(phba, vport->vpi, Fabric_DID, (uint8_t *)sp, mbox, in lpfc_issue_fabric_reglogin()
422 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_issue_fabric_reglogin()
436 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_issue_fabric_reglogin()
439 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_issue_fabric_reglogin()
463 struct lpfc_hba *phba = vport->phba; in lpfc_issue_reg_vfi() local
470 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_issue_reg_vfi()
471 !(phba->link_flag & LS_LOOPBACK_MODE) && in lpfc_issue_reg_vfi()
480 mboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_reg_vfi()
493 dmabuf->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &dmabuf->phys); in lpfc_issue_reg_vfi()
498 memcpy(dmabuf->virt, &phba->fc_fabparam, in lpfc_issue_reg_vfi()
511 rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT); in lpfc_issue_reg_vfi()
520 mempool_free(mboxq, phba->mbox_mem_pool); in lpfc_issue_reg_vfi()
523 lpfc_mbuf_free(phba, dmabuf->virt, dmabuf->phys); in lpfc_issue_reg_vfi()
547 struct lpfc_hba *phba = vport->phba; in lpfc_issue_unreg_vfi() local
552 mboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_unreg_vfi()
554 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_issue_unreg_vfi()
556 "HBA state x%x\n", phba->pport->port_state); in lpfc_issue_unreg_vfi()
564 rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT); in lpfc_issue_unreg_vfi()
566 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_issue_unreg_vfi()
569 rc, phba->pport->port_state); in lpfc_issue_unreg_vfi()
570 mempool_free(mboxq, phba->mbox_mem_pool); in lpfc_issue_unreg_vfi()
603 struct lpfc_hba *phba = vport->phba; in lpfc_check_clean_addr_bit() local
627 (vport->fc_prevDID || phba->cfg_delay_discovery)) { in lpfc_check_clean_addr_bit()
662 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_fabric() local
671 phba->fc_edtov = be32_to_cpu(sp->cmn.e_d_tov); in lpfc_cmpl_els_flogi_fabric()
673 phba->fc_edtov = (phba->fc_edtov + 999999) / 1000000; in lpfc_cmpl_els_flogi_fabric()
675 phba->fc_edtovResol = sp->cmn.edtovResolution; in lpfc_cmpl_els_flogi_fabric()
676 phba->fc_ratov = (be32_to_cpu(sp->cmn.w2.r_a_tov) + 999) / 1000; in lpfc_cmpl_els_flogi_fabric()
678 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_cmpl_els_flogi_fabric()
702 if (phba->cfg_enable_SmartSAN || in lpfc_cmpl_els_flogi_fabric()
703 (phba->cfg_fdmi_on == LPFC_FDMI_SUPPORT)) { in lpfc_cmpl_els_flogi_fabric()
706 if (phba->cfg_enable_SmartSAN) in lpfc_cmpl_els_flogi_fabric()
720 memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); in lpfc_cmpl_els_flogi_fabric()
722 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) { in lpfc_cmpl_els_flogi_fabric()
729 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
730 phba->link_flag |= LS_NPIV_FAB_SUPPORTED; in lpfc_cmpl_els_flogi_fabric()
731 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
739 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
740 phba->link_flag &= ~LS_NPIV_FAB_SUPPORTED; in lpfc_cmpl_els_flogi_fabric()
741 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
749 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi_fabric()
750 (phba->sli4_hba.lnk_info.lnk_tp == LPFC_LNK_TYPE_FC)) { in lpfc_cmpl_els_flogi_fabric()
753 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi_fabric()
780 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_cmpl_els_flogi_fabric()
795 } else if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi_fabric()
802 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
806 if (phba->sli_rev < LPFC_SLI_REV4) { in lpfc_cmpl_els_flogi_fabric()
808 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED && in lpfc_cmpl_els_flogi_fabric()
810 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
818 lpfc_start_fdiscs(phba); in lpfc_cmpl_els_flogi_fabric()
819 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_flogi_fabric()
857 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_nport() local
867 phba->sli3_options &= ~LPFC_SLI3_NPIV_ENABLED; in lpfc_cmpl_els_flogi_nport()
870 if ((phba->sli_rev == LPFC_SLI_REV4) && phba->fc_topology_changed) { in lpfc_cmpl_els_flogi_nport()
871 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi_nport()
876 phba->fc_topology_changed = 0; in lpfc_cmpl_els_flogi_nport()
928 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_cmpl_els_flogi_nport()
932 lpfc_config_link(phba, mbox); in lpfc_cmpl_els_flogi_nport()
936 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_cmpl_els_flogi_nport()
938 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_flogi_nport()
981 lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_flogi() argument
1012 if ((phba->hba_flag & HBA_FIP_SUPPORT) && in lpfc_cmpl_els_flogi()
1013 (phba->fcf.fcf_flag & FCF_DISCOVERY)) { in lpfc_cmpl_els_flogi()
1014 if (phba->link_state < LPFC_LINK_UP) in lpfc_cmpl_els_flogi()
1016 if ((phba->fcoe_cvl_eventtag_attn == in lpfc_cmpl_els_flogi()
1017 phba->fcoe_cvl_eventtag) && in lpfc_cmpl_els_flogi()
1023 phba->fcoe_cvl_eventtag_attn = in lpfc_cmpl_els_flogi()
1024 phba->fcoe_cvl_eventtag; in lpfc_cmpl_els_flogi()
1025 lpfc_printf_log(phba, KERN_WARNING, LOG_FIP | LOG_ELS, in lpfc_cmpl_els_flogi()
1029 phba->fcf.current_rec.fcf_indx, in lpfc_cmpl_els_flogi()
1032 lpfc_sli4_set_fcf_flogi_fail(phba, in lpfc_cmpl_els_flogi()
1033 phba->fcf.current_rec.fcf_indx); in lpfc_cmpl_els_flogi()
1034 fcf_index = lpfc_sli4_fcf_rr_next_index_get(phba); in lpfc_cmpl_els_flogi()
1049 irsp->ulpTimeout, phba->hba_flag, in lpfc_cmpl_els_flogi()
1050 phba->fcf.fcf_flag); in lpfc_cmpl_els_flogi()
1053 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) in lpfc_cmpl_els_flogi()
1078 if (phba->alpa_map[0] == 0) in lpfc_cmpl_els_flogi()
1080 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi()
1083 phba->fc_topology_changed)) { in lpfc_cmpl_els_flogi()
1085 if (phba->fc_topology_changed) { in lpfc_cmpl_els_flogi()
1086 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi()
1090 phba->fc_topology_changed = 0; in lpfc_cmpl_els_flogi()
1134 else if (!(phba->hba_flag & HBA_FCOE_MODE)) in lpfc_cmpl_els_flogi()
1143 phba->fcf.current_rec.fcf_indx, in lpfc_cmpl_els_flogi()
1144 phba->fcf.current_rec.switch_name[0], in lpfc_cmpl_els_flogi()
1145 phba->fcf.current_rec.switch_name[1], in lpfc_cmpl_els_flogi()
1146 phba->fcf.current_rec.switch_name[2], in lpfc_cmpl_els_flogi()
1147 phba->fcf.current_rec.switch_name[3], in lpfc_cmpl_els_flogi()
1148 phba->fcf.current_rec.switch_name[4], in lpfc_cmpl_els_flogi()
1149 phba->fcf.current_rec.switch_name[5], in lpfc_cmpl_els_flogi()
1150 phba->fcf.current_rec.switch_name[6], in lpfc_cmpl_els_flogi()
1151 phba->fcf.current_rec.switch_name[7], in lpfc_cmpl_els_flogi()
1152 phba->fcf.current_rec.fabric_name[0], in lpfc_cmpl_els_flogi()
1153 phba->fcf.current_rec.fabric_name[1], in lpfc_cmpl_els_flogi()
1154 phba->fcf.current_rec.fabric_name[2], in lpfc_cmpl_els_flogi()
1155 phba->fcf.current_rec.fabric_name[3], in lpfc_cmpl_els_flogi()
1156 phba->fcf.current_rec.fabric_name[4], in lpfc_cmpl_els_flogi()
1157 phba->fcf.current_rec.fabric_name[5], in lpfc_cmpl_els_flogi()
1158 phba->fcf.current_rec.fabric_name[6], in lpfc_cmpl_els_flogi()
1159 phba->fcf.current_rec.fabric_name[7]); in lpfc_cmpl_els_flogi()
1161 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1162 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1163 phba->hba_flag &= ~(FCF_RR_INPROG | HBA_DEVLOSS_TMO); in lpfc_cmpl_els_flogi()
1164 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1165 phba->fcf.fcf_redisc_attempted = 0; /* reset */ in lpfc_cmpl_els_flogi()
1170 if (phba->hba_flag & HBA_FIP_SUPPORT) in lpfc_cmpl_els_flogi()
1175 phba->fcf.current_rec.fcf_indx); in lpfc_cmpl_els_flogi()
1176 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1177 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1178 phba->hba_flag &= ~(FCF_RR_INPROG | HBA_DEVLOSS_TMO); in lpfc_cmpl_els_flogi()
1179 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1180 phba->fcf.fcf_redisc_attempted = 0; /* reset */ in lpfc_cmpl_els_flogi()
1195 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1196 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1197 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1212 (phba->link_state != LPFC_CLEAR_LA)) { in lpfc_cmpl_els_flogi()
1214 lpfc_issue_clear_la(phba, vport); in lpfc_cmpl_els_flogi()
1217 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_flogi()
1229 lpfc_cmpl_els_link_down(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_link_down() argument
1240 lpfc_printf_log(phba, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_link_down()
1248 atomic_dec(&phba->fabric_iocb_count); in lpfc_cmpl_els_link_down()
1250 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_link_down()
1279 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_flogi() local
1315 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_issue_els_flogi()
1316 if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) == in lpfc_issue_els_flogi()
1322 elsiocb->iocb.ulpContext = phba->fcf.fcfi; in lpfc_issue_els_flogi()
1331 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) { in lpfc_issue_els_flogi()
1340 if (phba->fc_topology != LPFC_TOPOLOGY_LOOP) { in lpfc_issue_els_flogi()
1345 tmo = phba->fc_ratov; in lpfc_issue_els_flogi()
1346 phba->fc_ratov = LPFC_DISC_FLOGI_TMO; in lpfc_issue_els_flogi()
1348 phba->fc_ratov = tmo; in lpfc_issue_els_flogi()
1350 phba->fc_stat.elsXmitFLOGI++; in lpfc_issue_els_flogi()
1355 phba->sli3_options, 0, 0); in lpfc_issue_els_flogi()
1357 rc = lpfc_issue_fabric_iocb(phba, elsiocb); in lpfc_issue_els_flogi()
1359 phba->hba_flag |= HBA_FLOGI_ISSUED; in lpfc_issue_els_flogi()
1362 if (phba->defer_flogi_acc_flag) { in lpfc_issue_els_flogi()
1368 defer_flogi_acc.iocb.ulpContext = phba->defer_flogi_acc_rx_id; in lpfc_issue_els_flogi()
1370 phba->defer_flogi_acc_ox_id; in lpfc_issue_els_flogi()
1375 phba->defer_flogi_acc_rx_id, in lpfc_issue_els_flogi()
1376 phba->defer_flogi_acc_ox_id, phba->hba_flag); in lpfc_issue_els_flogi()
1382 phba->defer_flogi_acc_flag = false; in lpfc_issue_els_flogi()
1388 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_flogi()
1409 lpfc_els_abort_flogi(struct lpfc_hba *phba) in lpfc_els_abort_flogi() argument
1417 lpfc_printf_log(phba, KERN_INFO, LOG_DISCOVERY, in lpfc_els_abort_flogi()
1421 pring = lpfc_phba_elsring(phba); in lpfc_els_abort_flogi()
1429 spin_lock_irq(&phba->hbalock); in lpfc_els_abort_flogi()
1436 lpfc_sli_issue_abort_iotag(phba, pring, iocb); in lpfc_els_abort_flogi()
1439 spin_unlock_irq(&phba->hbalock); in lpfc_els_abort_flogi()
1606 lpfc_plogi_confirm_nport(struct lpfc_hba *phba, uint32_t *prsp, in lpfc_plogi_confirm_nport() argument
1643 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_plogi_confirm_nport()
1644 active_rrqs_xri_bitmap = mempool_alloc(phba->active_rrq_pool, in lpfc_plogi_confirm_nport()
1648 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1665 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1672 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1681 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1689 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1693 if ((phba->sli_rev == LPFC_SLI_REV4) && active_rrqs_xri_bitmap) in lpfc_plogi_confirm_nport()
1696 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1699 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1703 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1719 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_plogi_confirm_nport()
1722 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1799 spin_lock_irq(&phba->ndlp_lock); in lpfc_plogi_confirm_nport()
1801 spin_unlock_irq(&phba->ndlp_lock); in lpfc_plogi_confirm_nport()
1810 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1814 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1833 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1837 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1869 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1872 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1927 lpfc_cmpl_els_rrq(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_rrq() argument
1969 (phba)->pport->cfg_log_verbose & LOG_ELS) in lpfc_cmpl_els_rrq()
1978 lpfc_clr_rrq_active(phba, rrq->xritag, rrq); in lpfc_cmpl_els_rrq()
1979 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_rrq()
2003 lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_plogi() argument
2059 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_plogi()
2072 (phba)->pport->cfg_log_verbose & LOG_ELS) in lpfc_cmpl_els_plogi()
2086 ndlp = lpfc_plogi_confirm_nport(phba, prsp->virt, ndlp); in lpfc_cmpl_els_plogi()
2106 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_plogi()
2134 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_plogi() local
2212 if (phba->sli.sli_flag & LPFC_SLI_SUPPRESS_RSP) { in lpfc_issue_els_plogi()
2218 phba->fc_stat.elsXmitPLOGI++; in lpfc_issue_els_plogi()
2220 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_plogi()
2223 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_plogi()
2243 lpfc_cmpl_els_prli(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_prli() argument
2284 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_prli()
2325 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_prli()
2355 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_prli() local
2369 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_issue_els_prli()
2403 if (phba->sli_rev == LPFC_SLI_REV3 && in lpfc_issue_els_prli()
2436 if (phba->vpd.rev.feaLevelHigh >= 0x02) { in lpfc_issue_els_prli()
2463 if (phba->nsler) { in lpfc_issue_els_prli()
2469 if ((phba->cfg_nvme_enable_fb) && in lpfc_issue_els_prli()
2470 !phba->nvmet_support) in lpfc_issue_els_prli()
2473 if (phba->nvmet_support) { in lpfc_issue_els_prli()
2493 phba->fc_stat.elsXmitPRLI++; in lpfc_issue_els_prli()
2505 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_prli()
2510 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_prli()
2518 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_issue_els_prli()
2565 struct lpfc_hba *phba = vport->phba; in lpfc_adisc_done() local
2571 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_adisc_done()
2573 (phba->sli_rev < LPFC_SLI_REV4)) { in lpfc_adisc_done()
2582 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2583 lpfc_issue_reg_vpi(phba, vport); in lpfc_adisc_done()
2592 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2659 lpfc_cmpl_els_adisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_adisc() argument
2702 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_adisc()
2730 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_adisc()
2759 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_adisc() local
2779 ap->hardAL_PA = phba->fc_pref_ALPA; in lpfc_issue_els_adisc()
2788 phba->fc_stat.elsXmitADISC++; in lpfc_issue_els_adisc()
2793 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_adisc()
2798 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_adisc()
2817 lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_logo() argument
2886 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_logo()
2890 phba->pport->fc_myDID = 0; in lpfc_cmpl_els_logo()
2894 if (phba->nvmet_support) in lpfc_cmpl_els_logo()
2895 lpfc_nvmet_update_targetport(phba); in lpfc_cmpl_els_logo()
2897 lpfc_nvme_update_localport(phba->pport); in lpfc_cmpl_els_logo()
2900 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_cmpl_els_logo()
2902 lpfc_config_link(phba, mbox); in lpfc_cmpl_els_logo()
2905 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) == in lpfc_cmpl_els_logo()
2907 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_logo()
2963 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_logo() local
2995 phba->fc_stat.elsXmitLOGO++; in lpfc_issue_els_logo()
3001 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_logo()
3006 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_logo()
3033 lpfc_cmpl_els_cmd(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_cmd() argument
3054 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_cmd()
3069 lpfc_cmpl_els_disc_cmd(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_disc_cmd() argument
3119 phba->fc_stat.elsRetryExceeded++; in lpfc_cmpl_els_disc_cmd()
3155 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_disc_cmd()
3183 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_scr() local
3227 phba->fc_stat.elsXmitSCR++; in lpfc_issue_els_scr()
3229 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_scr()
3236 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_scr()
3270 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rscn() local
3281 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP && in lpfc_issue_els_rscn()
3336 phba->fc_stat.elsXmitRSCN++; in lpfc_issue_els_rscn()
3338 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_rscn()
3345 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_rscn()
3382 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_farpr() local
3443 phba->fc_stat.elsXmitFARPR++; in lpfc_issue_els_farpr()
3445 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_farpr()
3452 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_farpr()
3482 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rdf() local
3543 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_rdf()
3550 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_rdf()
3635 struct lpfc_hba *phba = vport->phba; in lpfc_els_retry_delay() local
3639 spin_lock_irqsave(&phba->hbalock, flags); in lpfc_els_retry_delay()
3641 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_els_retry_delay()
3651 list_add_tail(&evtp->evt_listp, &phba->work_list); in lpfc_els_retry_delay()
3652 lpfc_worker_wake_up(phba); in lpfc_els_retry_delay()
3654 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_els_retry_delay()
3746 struct lpfc_hba *phba = vport->phba; in lpfc_link_reset() local
3753 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_link_reset()
3755 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_link_reset()
3761 if (phba->sli_rev <= LPFC_SLI_REV3) { in lpfc_link_reset()
3762 spin_lock_irq(&phba->hbalock); in lpfc_link_reset()
3763 phba->sli.sli_flag |= LPFC_PROCESS_LA; in lpfc_link_reset()
3764 control = readl(phba->HCregaddr); in lpfc_link_reset()
3766 writel(control, phba->HCregaddr); in lpfc_link_reset()
3767 readl(phba->HCregaddr); /* flush */ in lpfc_link_reset()
3768 spin_unlock_irq(&phba->hbalock); in lpfc_link_reset()
3771 lpfc_init_link(phba, mbox, phba->cfg_topology, in lpfc_link_reset()
3772 phba->cfg_link_speed); in lpfc_link_reset()
3775 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_link_reset()
3777 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_link_reset()
3780 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_link_reset()
3809 lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_els_retry() argument
3854 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_els_retry()
3859 lpfc_set_rrq_active(phba, ndlp, in lpfc_els_retry()
3868 phba->pcidev->device) { in lpfc_els_retry()
3869 phba->fc_topology = LPFC_TOPOLOGY_LOOP; in lpfc_els_retry()
3870 phba->pport->fc_myDID = 0; in lpfc_els_retry()
3871 phba->alpa_map[0] = 0; in lpfc_els_retry()
3872 phba->alpa_map[1] = 0; in lpfc_els_retry()
4009 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_retry()
4061 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_retry()
4124 (phba->fc_topology != LPFC_TOPOLOGY_LOOP) && in lpfc_els_retry()
4129 if (phba->link_flag != LS_LOOPBACK_MODE) in lpfc_els_retry()
4147 phba->fc_stat.elsRetryExceeded++; in lpfc_els_retry()
4158 if (phba->fcf.fcf_flag & FCF_DISCOVERY) { in lpfc_els_retry()
4186 phba->fc_stat.elsXmitRetry++; in lpfc_els_retry()
4188 phba->fc_stat.elsDelayRetry++; in lpfc_els_retry()
4276 lpfc_els_free_data(struct lpfc_hba *phba, struct lpfc_dmabuf *buf_ptr1) in lpfc_els_free_data() argument
4285 lpfc_mbuf_free(phba, buf_ptr->virt, buf_ptr->phys); in lpfc_els_free_data()
4288 lpfc_mbuf_free(phba, buf_ptr1->virt, buf_ptr1->phys); in lpfc_els_free_data()
4306 lpfc_els_free_bpl(struct lpfc_hba *phba, struct lpfc_dmabuf *buf_ptr) in lpfc_els_free_bpl() argument
4308 lpfc_mbuf_free(phba, buf_ptr->virt, buf_ptr->phys); in lpfc_els_free_bpl()
4341 lpfc_els_free_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *elsiocb) in lpfc_els_free_iocb() argument
4377 spin_lock_irq(&phba->hbalock); in lpfc_els_free_iocb()
4384 &phba->elsbuf); in lpfc_els_free_iocb()
4385 phba->elsbuf_cnt++; in lpfc_els_free_iocb()
4388 list_add_tail(&buf_ptr->list, &phba->elsbuf); in lpfc_els_free_iocb()
4389 phba->elsbuf_cnt++; in lpfc_els_free_iocb()
4390 spin_unlock_irq(&phba->hbalock); in lpfc_els_free_iocb()
4394 lpfc_els_free_data(phba, buf_ptr1); in lpfc_els_free_iocb()
4401 lpfc_els_free_bpl(phba, buf_ptr); in lpfc_els_free_iocb()
4404 lpfc_sli_release_iocbq(phba, elsiocb); in lpfc_els_free_iocb()
4426 lpfc_cmpl_els_logo_acc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_logo_acc() argument
4463 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_logo_acc()
4480 lpfc_mbx_cmpl_dflt_rpi(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_mbx_cmpl_dflt_rpi() argument
4488 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_mbx_cmpl_dflt_rpi()
4490 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_mbx_cmpl_dflt_rpi()
4529 lpfc_cmpl_els_rsp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_rsp() argument
4544 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_rsp()
4569 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_cmpl_els_rsp()
4572 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
4614 lpfc_mbuf_free(phba, mp->virt, in lpfc_cmpl_els_rsp()
4618 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
4639 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_cmpl_els_rsp()
4681 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_cmpl_els_rsp()
4684 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
4709 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_rsp()
4744 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_acc() local
4801 memcpy(sp, &phba->fc_fabparam, in lpfc_els_rsp_acc()
4830 if (phba->sli.sli_flag & LPFC_SLI_SUPPRESS_RSP) { in lpfc_els_rsp_acc()
4878 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_acc()
4879 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_acc()
4881 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_acc()
4914 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_reject() local
4953 phba->fc_stat.elsXmitLSRJT++; in lpfc_els_rsp_reject()
4955 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_reject()
4958 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_reject()
4987 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_adisc_acc() local
5019 ap->hardAL_PA = phba->fc_pref_ALPA; in lpfc_els_rsp_adisc_acc()
5028 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_adisc_acc()
5030 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_adisc_acc()
5032 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_adisc_acc()
5070 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_prli_acc() local
5131 vpd = &phba->vpd; in lpfc_els_rsp_prli_acc()
5158 if (phba->nvmet_support) { in lpfc_els_rsp_prli_acc()
5161 if (phba->cfg_nvme_enable_fb) { in lpfc_els_rsp_prli_acc()
5169 phba->cfg_nvmet_fb_size); in lpfc_els_rsp_prli_acc()
5195 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_prli_acc()
5198 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_prli_acc()
5200 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_prli_acc()
5236 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rnid_acc() local
5295 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rnid_acc()
5298 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_rnid_acc()
5300 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rnid_acc()
5318 struct lpfc_hba *phba = vport->phba; in lpfc_els_clear_rrq() local
5349 lpfc_clr_rrq_active(phba, xri, prrq); in lpfc_els_clear_rrq()
5368 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_echo_acc() local
5402 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_echo_acc()
5405 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_echo_acc()
5407 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_echo_acc()
5652 if (vport->phba->fc_topology != LPFC_TOPOLOGY_LOOP) { in lpfc_rdp_res_bbc_desc()
5653 bbCredit = vport->phba->fc_fabparam.cmn.bbCreditLsb | in lpfc_rdp_res_bbc_desc()
5654 (vport->phba->fc_fabparam.cmn.bbCreditMsb << 8); in lpfc_rdp_res_bbc_desc()
5667 lpfc_rdp_res_oed_temp_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_temp_desc() argument
5679 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
5681 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
5683 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
5685 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
5695 lpfc_rdp_res_oed_voltage_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_voltage_desc() argument
5708 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
5710 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
5712 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
5714 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
5724 lpfc_rdp_res_oed_txbias_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_txbias_desc() argument
5737 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
5739 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
5741 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
5743 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
5753 lpfc_rdp_res_oed_txpower_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_txpower_desc() argument
5766 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
5768 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
5770 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
5772 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
5783 lpfc_rdp_res_oed_rxpower_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_rxpower_desc() argument
5796 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
5798 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
5800 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
5802 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
5843 lpfc_rdp_res_speed(struct fc_rdp_port_speed_desc *desc, struct lpfc_hba *phba) in lpfc_rdp_res_speed() argument
5850 switch (phba->fc_linkspeed) { in lpfc_rdp_res_speed()
5882 if (phba->lmt & LMT_128Gb) in lpfc_rdp_res_speed()
5884 if (phba->lmt & LMT_64Gb) in lpfc_rdp_res_speed()
5886 if (phba->lmt & LMT_32Gb) in lpfc_rdp_res_speed()
5888 if (phba->lmt & LMT_16Gb) in lpfc_rdp_res_speed()
5890 if (phba->lmt & LMT_10Gb) in lpfc_rdp_res_speed()
5892 if (phba->lmt & LMT_8Gb) in lpfc_rdp_res_speed()
5894 if (phba->lmt & LMT_4Gb) in lpfc_rdp_res_speed()
5896 if (phba->lmt & LMT_2Gb) in lpfc_rdp_res_speed()
5898 if (phba->lmt & LMT_1Gb) in lpfc_rdp_res_speed()
5903 if (phba->cfg_link_speed != LPFC_USER_LINK_SPEED_AUTO) in lpfc_rdp_res_speed()
5953 lpfc_els_rdp_cmpl(struct lpfc_hba *phba, struct lpfc_rdp_context *rdp_context, in lpfc_els_rdp_cmpl() argument
5999 phba->sfp_alarm |= *flag_ptr; in lpfc_els_rdp_cmpl()
6001 phba->sfp_warning |= *flag_ptr; in lpfc_els_rdp_cmpl()
6011 phba); in lpfc_els_rdp_cmpl()
6022 len += lpfc_rdp_res_oed_temp_desc(phba, in lpfc_els_rdp_cmpl()
6025 len += lpfc_rdp_res_oed_voltage_desc(phba, in lpfc_els_rdp_cmpl()
6028 len += lpfc_rdp_res_oed_txbias_desc(phba, in lpfc_els_rdp_cmpl()
6031 len += lpfc_rdp_res_oed_txpower_desc(phba, in lpfc_els_rdp_cmpl()
6034 len += lpfc_rdp_res_oed_rxpower_desc(phba, in lpfc_els_rdp_cmpl()
6050 phba->fc_stat.elsXmitACC++; in lpfc_els_rdp_cmpl()
6051 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rdp_cmpl()
6053 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rdp_cmpl()
6075 phba->fc_stat.elsXmitLSRJT++; in lpfc_els_rdp_cmpl()
6077 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rdp_cmpl()
6080 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rdp_cmpl()
6086 lpfc_get_rdp_info(struct lpfc_hba *phba, struct lpfc_rdp_context *rdp_context) in lpfc_get_rdp_info() argument
6091 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_get_rdp_info()
6093 lpfc_printf_log(phba, KERN_WARNING, LOG_MBOX | LOG_ELS, in lpfc_get_rdp_info()
6098 if (lpfc_sli4_dump_page_a0(phba, mbox)) in lpfc_get_rdp_info()
6103 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_get_rdp_info()
6111 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_get_rdp_info()
6136 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rdp() local
6144 if (phba->sli_rev < LPFC_SLI_REV4 || in lpfc_els_rcv_rdp()
6145 bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) < in lpfc_els_rcv_rdp()
6152 if (phba->sli_rev < LPFC_SLI_REV4 || (phba->hba_flag & HBA_FCOE_MODE)) { in lpfc_els_rcv_rdp()
6188 if (lpfc_get_rdp_info(phba, rdp_context)) { in lpfc_els_rcv_rdp()
6212 lpfc_els_lcb_rsp(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_els_lcb_rsp() argument
6237 lpfc_printf_log(phba, KERN_INFO, LOG_MBOX, in lpfc_els_lcb_rsp()
6246 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_lcb_rsp()
6250 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_lcb_rsp()
6252 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_lcb_rsp()
6278 phba->fc_stat.elsXmitACC++; in lpfc_els_lcb_rsp()
6279 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_lcb_rsp()
6281 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_lcb_rsp()
6288 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_lcb_rsp()
6308 phba->fc_stat.elsXmitLSRJT++; in lpfc_els_lcb_rsp()
6309 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_lcb_rsp()
6311 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_lcb_rsp()
6321 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_set_beacon() local
6327 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_sli4_set_beacon()
6334 lpfc_sli4_config(phba, mbox, LPFC_MBOX_SUBSYSTEM_COMMON, in lpfc_sli4_set_beacon()
6338 mbox->vport = phba->pport; in lpfc_sli4_set_beacon()
6341 phba->sli4_hba.physical_port); in lpfc_sli4_set_beacon()
6352 if (phba->sli4_hba.pc_sli4_params.bv1s) { in lpfc_sli4_set_beacon()
6364 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_sli4_set_beacon()
6378 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_sli4_set_beacon()
6380 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_sli4_set_beacon()
6406 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_lcb() local
6434 if (phba->sli_rev < LPFC_SLI_REV4 || in lpfc_els_rcv_lcb()
6435 phba->hba_flag & HBA_FCOE_MODE || in lpfc_els_rcv_lcb()
6436 (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) < in lpfc_els_rcv_lcb()
6487 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_rscn() local
6501 lpfc_in_buf_free(phba, vport->fc_rscn_id_list[i]); in lpfc_els_flush_rscn()
6614 if (vport->phba->nvmet_support) in lpfc_rscn_recovery_check()
6713 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rscn() local
6771 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_rcv_rscn()
6780 if (lpfc_find_vport_by_did(phba, nportid)) in lpfc_els_rcv_rscn()
6828 tmo = ((phba->fc_ratov * 3) + 3); in lpfc_els_rcv_rscn()
6921 struct lpfc_hba *phba = vport->phba; in lpfc_els_handle_rscn() local
6951 if (phba->cfg_ns_query == LPFC_NS_QUERY_GID_FT) { in lpfc_els_handle_rscn()
6954 } else if (phba->cfg_ns_query == LPFC_NS_QUERY_GID_PT) { in lpfc_els_handle_rscn()
7021 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_flogi() local
7039 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_els_rcv_flogi()
7063 if (phba->sli_rev < LPFC_SLI_REV4) { in lpfc_els_rcv_flogi()
7064 mbox = mempool_alloc(phba->mbox_mem_pool, in lpfc_els_rcv_flogi()
7068 lpfc_linkdown(phba); in lpfc_els_rcv_flogi()
7069 lpfc_init_link(phba, mbox, in lpfc_els_rcv_flogi()
7070 phba->cfg_topology, in lpfc_els_rcv_flogi()
7071 phba->cfg_link_speed); in lpfc_els_rcv_flogi()
7075 rc = lpfc_sli_issue_mbox(phba, mbox, in lpfc_els_rcv_flogi()
7077 lpfc_set_loopback_flag(phba); in lpfc_els_rcv_flogi()
7079 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_flogi()
7086 lpfc_els_abort_flogi(phba); in lpfc_els_rcv_flogi()
7133 memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); in lpfc_els_rcv_flogi()
7136 if (!(phba->hba_flag & HBA_FLOGI_ISSUED)) { in lpfc_els_rcv_flogi()
7137 phba->defer_flogi_acc_rx_id = cmdiocb->iocb.ulpContext; in lpfc_els_rcv_flogi()
7138 phba->defer_flogi_acc_ox_id = in lpfc_els_rcv_flogi()
7146 phba->defer_flogi_acc_rx_id, in lpfc_els_rcv_flogi()
7147 phba->defer_flogi_acc_ox_id, phba->hba_flag); in lpfc_els_rcv_flogi()
7149 phba->defer_flogi_acc_flag = true; in lpfc_els_rcv_flogi()
7287 if (vport->phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_rcv_rrq()
7311 lpfc_els_rsp_rls_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_els_rsp_rls_acc() argument
7332 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
7337 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_rsp_rls_acc()
7345 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
7364 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
7373 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rls_acc()
7374 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == IOCB_ERROR) in lpfc_els_rsp_rls_acc()
7375 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rls_acc()
7400 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rls() local
7409 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_ATOMIC); in lpfc_els_rcv_rls()
7411 lpfc_read_lnk_stat(phba, mbox); in lpfc_els_rcv_rls()
7418 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_els_rcv_rls()
7426 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_rls()
7463 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rtv() local
7477 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_rcv_rtv()
7495 rtv_rsp->ratov = cpu_to_be32(phba->fc_ratov * 1000); /* report msecs */ in lpfc_els_rcv_rtv()
7496 rtv_rsp->edtov = cpu_to_be32(phba->fc_edtov); in lpfc_els_rcv_rtv()
7497 bf_set(qtov_edtovres, rtv_rsp, phba->fc_edtovResol ? 1 : 0); in lpfc_els_rcv_rtv()
7511 phba->fc_stat.elsXmitACC++; in lpfc_els_rcv_rtv()
7512 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == IOCB_ERROR) in lpfc_els_rcv_rtv()
7513 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rcv_rtv()
7543 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rrq() local
7570 bf_set(rrq_oxid, els_rrq, phba->sli4_hba.xri_ids[rrq->xritag]); in lpfc_issue_els_rrq()
7582 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_rrq()
7585 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_rrq()
7604 lpfc_send_rrq(struct lpfc_hba *phba, struct lpfc_node_rrq *rrq) in lpfc_send_rrq() argument
7611 if (lpfc_test_rrq_active(phba, ndlp, rrq->xritag)) in lpfc_send_rrq()
7641 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rpl_acc() local
7681 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rpl_acc()
7682 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_els_rsp_rpl_acc()
7684 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rpl_acc()
7892 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_fan() local
7900 if ((vport == phba->pport) && in lpfc_els_rcv_fan()
7902 if ((memcmp(&phba->fc_fabparam.nodeName, &fp->FnodeName, in lpfc_els_rcv_fan()
7904 (memcmp(&phba->fc_fabparam.portName, &fp->FportName, in lpfc_els_rcv_fan()
7911 if (phba->sli_rev < LPFC_SLI_REV4) in lpfc_els_rcv_fan()
7938 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout() local
7949 lpfc_worker_wake_up(phba); in lpfc_els_timeout()
7966 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout_handler() local
7977 timeout = (uint32_t)(phba->fc_ratov << 1); in lpfc_els_timeout_handler()
7979 pring = lpfc_phba_elsring(phba); in lpfc_els_timeout_handler()
7983 if (phba->pport->load_flag & FC_UNLOADING) in lpfc_els_timeout_handler()
7986 spin_lock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
7987 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_timeout_handler()
8029 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_timeout_handler()
8031 spin_unlock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
8039 spin_lock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
8041 lpfc_sli_issue_abort_iotag(phba, pring, piocb); in lpfc_els_timeout_handler()
8042 spin_unlock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
8046 if (!(phba->pport->load_flag & FC_UNLOADING)) in lpfc_els_timeout_handler()
8075 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_cmd() local
8089 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
8090 pring = lpfc_phba_elsring(phba); in lpfc_els_flush_cmd()
8094 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
8098 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
8126 if (phba->link_state == LPFC_LINK_DOWN) in lpfc_els_flush_cmd()
8133 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
8135 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
8139 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
8141 lpfc_sli_issue_abort_iotag(phba, pring, piocb); in lpfc_els_flush_cmd()
8142 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
8149 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
8150 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
8178 if (vport == phba->pport) { in lpfc_els_flush_cmd()
8180 &phba->fabric_iocb_list, list) { in lpfc_els_flush_cmd()
8187 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
8189 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
8192 lpfc_sli_cancel_iocbs(phba, &abort_list, in lpfc_els_flush_cmd()
8216 lpfc_els_flush_all_cmd(struct lpfc_hba *phba) in lpfc_els_flush_all_cmd() argument
8220 spin_lock_irq(&phba->port_list_lock); in lpfc_els_flush_all_cmd()
8221 list_for_each_entry(vport, &phba->port_list, listentry) in lpfc_els_flush_all_cmd()
8223 spin_unlock_irq(&phba->port_list_lock); in lpfc_els_flush_all_cmd()
8238 lpfc_send_els_failure_event(struct lpfc_hba *phba, in lpfc_send_els_failure_event() argument
8474 lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_els_unsol_buffer() argument
8493 if ((phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) == 0) in lpfc_els_unsol_buffer()
8494 lpfc_post_buffer(phba, pring, 1); in lpfc_els_unsol_buffer()
8545 phba->fc_stat.elsRcvFrame++; in lpfc_els_unsol_buffer()
8589 phba->fc_stat.elsRcvPLOGI++; in lpfc_els_unsol_buffer()
8590 ndlp = lpfc_plogi_confirm_nport(phba, payload, ndlp); in lpfc_els_unsol_buffer()
8591 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_els_unsol_buffer()
8592 (phba->pport->fc_flag & FC_PT2PT)) { in lpfc_els_unsol_buffer()
8615 if (!(phba->pport->fc_flag & FC_PT2PT) || in lpfc_els_unsol_buffer()
8616 (phba->pport->fc_flag & FC_PT2PT_PLOGI)) { in lpfc_els_unsol_buffer()
8636 phba->fc_stat.elsRcvFLOGI++; in lpfc_els_unsol_buffer()
8659 phba->fc_stat.elsRcvLOGO++; in lpfc_els_unsol_buffer()
8673 phba->fc_stat.elsRcvPRLO++; in lpfc_els_unsol_buffer()
8683 phba->fc_stat.elsRcvLCB++; in lpfc_els_unsol_buffer()
8687 phba->fc_stat.elsRcvRDP++; in lpfc_els_unsol_buffer()
8691 phba->fc_stat.elsRcvRSCN++; in lpfc_els_unsol_buffer()
8702 phba->fc_stat.elsRcvADISC++; in lpfc_els_unsol_buffer()
8716 phba->fc_stat.elsRcvPDISC++; in lpfc_els_unsol_buffer()
8730 phba->fc_stat.elsRcvFARPR++; in lpfc_els_unsol_buffer()
8738 phba->fc_stat.elsRcvFARP++; in lpfc_els_unsol_buffer()
8746 phba->fc_stat.elsRcvFAN++; in lpfc_els_unsol_buffer()
8755 phba->fc_stat.elsRcvPRLI++; in lpfc_els_unsol_buffer()
8769 phba->fc_stat.elsRcvLIRR++; in lpfc_els_unsol_buffer()
8779 phba->fc_stat.elsRcvRLS++; in lpfc_els_unsol_buffer()
8789 phba->fc_stat.elsRcvRPL++; in lpfc_els_unsol_buffer()
8799 phba->fc_stat.elsRcvRNID++; in lpfc_els_unsol_buffer()
8808 phba->fc_stat.elsRcvRTV++; in lpfc_els_unsol_buffer()
8818 phba->fc_stat.elsRcvRRQ++; in lpfc_els_unsol_buffer()
8828 phba->fc_stat.elsRcvECHO++; in lpfc_els_unsol_buffer()
8884 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_els_unsol_buffer()
8887 lpfc_linkdown(phba); in lpfc_els_unsol_buffer()
8888 lpfc_init_link(phba, mbox, in lpfc_els_unsol_buffer()
8889 phba->cfg_topology, in lpfc_els_unsol_buffer()
8890 phba->cfg_link_speed); in lpfc_els_unsol_buffer()
8894 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) == in lpfc_els_unsol_buffer()
8896 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_unsol_buffer()
8907 phba->fc_stat.elsRcvDrop++; in lpfc_els_unsol_buffer()
8923 lpfc_els_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_els_unsol_event() argument
8926 struct lpfc_vport *vport = phba->pport; in lpfc_els_unsol_event()
8937 lpfc_sli_hbqbuf_add_hbqs(phba, LPFC_ELS_HBQ); in lpfc_els_unsol_event()
8941 phba->fc_stat.NoRcvBuf++; in lpfc_els_unsol_event()
8943 if (!(phba->sli3_options & LPFC_SLI3_HBQ_ENABLED)) in lpfc_els_unsol_event()
8944 lpfc_post_buffer(phba, pring, 0); in lpfc_els_unsol_event()
8948 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_unsol_event()
8952 vport = phba->pport; in lpfc_els_unsol_event()
8954 vport = lpfc_find_vport_by_vpid(phba, in lpfc_els_unsol_event()
8967 if (phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) { in lpfc_els_unsol_event()
8972 elsiocb->context2 = lpfc_sli_ringpostbuf_get(phba, pring, in lpfc_els_unsol_event()
8976 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
8982 lpfc_in_buf_free(phba, (struct lpfc_dmabuf *)elsiocb->context2); in lpfc_els_unsol_event()
8987 if ((phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) && in lpfc_els_unsol_event()
8990 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
8993 lpfc_in_buf_free(phba, elsiocb->context2); in lpfc_els_unsol_event()
9040 lpfc_do_scr_ns_plogi(struct lpfc_hba *phba, struct lpfc_vport *vport) in lpfc_do_scr_ns_plogi() argument
9053 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_do_scr_ns_plogi()
9055 phba->fc_ratov); in lpfc_do_scr_ns_plogi()
9057 jiffies + msecs_to_jiffies(1000 * phba->fc_ratov)); in lpfc_do_scr_ns_plogi()
9066 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_do_scr_ns_plogi()
9078 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_do_scr_ns_plogi()
9099 if ((phba->cfg_enable_SmartSAN || in lpfc_do_scr_ns_plogi()
9100 (phba->cfg_fdmi_on == LPFC_FDMI_SUPPORT)) && in lpfc_do_scr_ns_plogi()
9118 lpfc_cmpl_reg_new_vport(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_cmpl_reg_new_vport() argument
9135 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_cmpl_reg_new_vport()
9155 lpfc_init_vpi(phba, pmb, vport->vpi); in lpfc_cmpl_reg_new_vport()
9158 rc = lpfc_sli_issue_mbox(phba, pmb, in lpfc_cmpl_reg_new_vport()
9172 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
9182 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
9195 if (vport == phba->pport) { in lpfc_cmpl_reg_new_vport()
9196 if (phba->sli_rev < LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
9204 lpfc_start_fdiscs(phba); in lpfc_cmpl_reg_new_vport()
9205 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
9208 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
9216 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_cmpl_reg_new_vport()
9230 lpfc_register_new_vport(struct lpfc_hba *phba, struct lpfc_vport *vport, in lpfc_register_new_vport() argument
9236 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_register_new_vport()
9242 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_register_new_vport()
9248 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_register_new_vport()
9276 lpfc_cancel_all_vport_retry_delay_timer(struct lpfc_hba *phba) in lpfc_cancel_all_vport_retry_delay_timer() argument
9284 link_state = phba->link_state; in lpfc_cancel_all_vport_retry_delay_timer()
9285 lpfc_linkdown(phba); in lpfc_cancel_all_vport_retry_delay_timer()
9286 phba->link_state = link_state; in lpfc_cancel_all_vport_retry_delay_timer()
9288 vports = lpfc_create_vport_work_array(phba); in lpfc_cancel_all_vport_retry_delay_timer()
9291 for (i = 0; i <= phba->max_vports && vports[i] != NULL; i++) { in lpfc_cancel_all_vport_retry_delay_timer()
9297 lpfc_destroy_vport_work_array(phba, vports); in lpfc_cancel_all_vport_retry_delay_timer()
9310 lpfc_retry_pport_discovery(struct lpfc_hba *phba) in lpfc_retry_pport_discovery() argument
9316 lpfc_cancel_all_vport_retry_delay_timer(phba); in lpfc_retry_pport_discovery()
9319 ndlp = lpfc_findnode_did(phba->pport, Fabric_DID); in lpfc_retry_pport_discovery()
9323 shost = lpfc_shost_from_vport(phba->pport); in lpfc_retry_pport_discovery()
9329 phba->pport->port_state = LPFC_FLOGI; in lpfc_retry_pport_discovery()
9343 lpfc_fabric_login_reqd(struct lpfc_hba *phba, in lpfc_fabric_login_reqd() argument
9376 lpfc_cmpl_els_fdisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_fdisc() argument
9398 list_for_each_entry(piocb, &phba->fabric_iocb_list, list) { in lpfc_cmpl_els_fdisc()
9408 if (lpfc_fabric_login_reqd(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_fdisc()
9409 lpfc_retry_pport_discovery(phba); in lpfc_cmpl_els_fdisc()
9414 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) in lpfc_cmpl_els_fdisc()
9426 if (vport->phba->fc_topology == LPFC_TOPOLOGY_LOOP) in lpfc_cmpl_els_fdisc()
9460 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_els_fdisc()
9466 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_els_fdisc()
9471 } else if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_fdisc()
9477 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
9484 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
9486 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_fdisc()
9496 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_fdisc()
9523 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_fdisc() local
9552 if (phba->sli_rev == LPFC_SLI_REV3) { in lpfc_issue_els_fdisc()
9560 memcpy(pcmd, &vport->phba->pport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_fdisc()
9582 phba->fc_stat.elsXmitFDISC++; in lpfc_issue_els_fdisc()
9589 rc = lpfc_issue_fabric_iocb(phba, elsiocb); in lpfc_issue_els_fdisc()
9591 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_fdisc()
9616 lpfc_cmpl_els_npiv_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_npiv_logo() argument
9630 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_npiv_logo()
9672 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_npiv_logo() local
9700 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_npiv_logo()
9705 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_npiv_logo()
9725 struct lpfc_hba *phba = from_timer(phba, t, fabric_block_timer); in lpfc_fabric_block_timeout() local
9729 spin_lock_irqsave(&phba->pport->work_port_lock, iflags); in lpfc_fabric_block_timeout()
9730 tmo_posted = phba->pport->work_port_events & WORKER_FABRIC_BLOCK_TMO; in lpfc_fabric_block_timeout()
9732 phba->pport->work_port_events |= WORKER_FABRIC_BLOCK_TMO; in lpfc_fabric_block_timeout()
9733 spin_unlock_irqrestore(&phba->pport->work_port_lock, iflags); in lpfc_fabric_block_timeout()
9736 lpfc_worker_wake_up(phba); in lpfc_fabric_block_timeout()
9751 lpfc_resume_fabric_iocbs(struct lpfc_hba *phba) in lpfc_resume_fabric_iocbs() argument
9760 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_resume_fabric_iocbs()
9762 if (atomic_read(&phba->fabric_iocb_count) == 0) { in lpfc_resume_fabric_iocbs()
9763 list_remove_head(&phba->fabric_iocb_list, iocb, typeof(*iocb), in lpfc_resume_fabric_iocbs()
9767 atomic_inc(&phba->fabric_iocb_count); in lpfc_resume_fabric_iocbs()
9769 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_resume_fabric_iocbs()
9779 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0); in lpfc_resume_fabric_iocbs()
9788 iocb->iocb_cmpl(phba, iocb, iocb); in lpfc_resume_fabric_iocbs()
9790 atomic_dec(&phba->fabric_iocb_count); in lpfc_resume_fabric_iocbs()
9808 lpfc_unblock_fabric_iocbs(struct lpfc_hba *phba) in lpfc_unblock_fabric_iocbs() argument
9810 clear_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_unblock_fabric_iocbs()
9812 lpfc_resume_fabric_iocbs(phba); in lpfc_unblock_fabric_iocbs()
9826 lpfc_block_fabric_iocbs(struct lpfc_hba *phba) in lpfc_block_fabric_iocbs() argument
9830 blocked = test_and_set_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_block_fabric_iocbs()
9833 mod_timer(&phba->fabric_block_timer, in lpfc_block_fabric_iocbs()
9853 lpfc_cmpl_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_fabric_iocb() argument
9864 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
9870 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
9878 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
9882 BUG_ON(atomic_read(&phba->fabric_iocb_count) == 0); in lpfc_cmpl_fabric_iocb()
9887 cmdiocb->iocb_cmpl(phba, cmdiocb, rspiocb); in lpfc_cmpl_fabric_iocb()
9889 atomic_dec(&phba->fabric_iocb_count); in lpfc_cmpl_fabric_iocb()
9890 if (!test_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags)) { in lpfc_cmpl_fabric_iocb()
9892 lpfc_resume_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
9921 lpfc_issue_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *iocb) in lpfc_issue_fabric_iocb() argument
9927 BUG_ON(atomic_read(&phba->fabric_iocb_count) > 1); in lpfc_issue_fabric_iocb()
9929 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
9930 ready = atomic_read(&phba->fabric_iocb_count) == 0 && in lpfc_issue_fabric_iocb()
9931 !test_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_issue_fabric_iocb()
9935 atomic_inc(&phba->fabric_iocb_count); in lpfc_issue_fabric_iocb()
9936 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
9946 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0); in lpfc_issue_fabric_iocb()
9952 atomic_dec(&phba->fabric_iocb_count); in lpfc_issue_fabric_iocb()
9955 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
9956 list_add_tail(&iocb->list, &phba->fabric_iocb_list); in lpfc_issue_fabric_iocb()
9957 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
9977 struct lpfc_hba *phba = vport->phba; in lpfc_fabric_abort_vport() local
9980 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_vport()
9981 list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, in lpfc_fabric_abort_vport()
9989 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_vport()
9992 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_vport()
10010 struct lpfc_hba *phba = ndlp->phba; in lpfc_fabric_abort_nport() local
10014 pring = lpfc_phba_elsring(phba); in lpfc_fabric_abort_nport()
10019 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_nport()
10020 list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, in lpfc_fabric_abort_nport()
10022 if ((lpfc_check_sli_ndlp(phba, pring, piocb, ndlp))) { in lpfc_fabric_abort_nport()
10027 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_nport()
10030 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_nport()
10045 void lpfc_fabric_abort_hba(struct lpfc_hba *phba) in lpfc_fabric_abort_hba() argument
10049 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_hba()
10050 list_splice_init(&phba->fabric_iocb_list, &completions); in lpfc_fabric_abort_hba()
10051 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_hba()
10054 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_hba()
10068 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_vport_delete_els_xri_aborted() local
10072 spin_lock_irqsave(&phba->hbalock, iflag); in lpfc_sli4_vport_delete_els_xri_aborted()
10073 spin_lock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_vport_delete_els_xri_aborted()
10075 &phba->sli4_hba.lpfc_abts_els_sgl_list, list) { in lpfc_sli4_vport_delete_els_xri_aborted()
10079 spin_unlock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_vport_delete_els_xri_aborted()
10080 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_vport_delete_els_xri_aborted()
10093 lpfc_sli4_els_xri_aborted(struct lpfc_hba *phba, in lpfc_sli4_els_xri_aborted() argument
10105 pring = lpfc_phba_elsring(phba); in lpfc_sli4_els_xri_aborted()
10107 spin_lock_irqsave(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
10108 spin_lock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
10110 &phba->sli4_hba.lpfc_abts_els_sgl_list, list) { in lpfc_sli4_els_xri_aborted()
10116 &phba->sli4_hba.lpfc_els_sgl_list); in lpfc_sli4_els_xri_aborted()
10118 spin_unlock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
10119 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
10120 lpfc_set_rrq_active(phba, ndlp, in lpfc_sli4_els_xri_aborted()
10126 lpfc_worker_wake_up(phba); in lpfc_sli4_els_xri_aborted()
10130 spin_unlock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
10131 lxri = lpfc_sli4_xri_inrange(phba, xri); in lpfc_sli4_els_xri_aborted()
10133 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
10136 spin_lock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
10137 sglq_entry = __lpfc_get_active_sglq(phba, lxri); in lpfc_sli4_els_xri_aborted()
10139 spin_unlock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
10140 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
10144 spin_unlock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
10145 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
10163 struct lpfc_hba *phba; in lpfc_sli_abts_recover_port() local
10167 phba = vport->phba; in lpfc_sli_abts_recover_port()
10169 lpfc_printf_log(phba, KERN_INFO, in lpfc_sli_abts_recover_port()
10174 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_sli_abts_recover_port()