Lines Matching refs:phba
54 static int lpfc_issue_fabric_iocb(struct lpfc_hba *phba,
85 struct lpfc_hba *phba = vport->phba; in lpfc_els_chk_latt() local
89 phba->link_state == LPFC_LINK_DOWN || in lpfc_els_chk_latt()
90 phba->sli_rev > LPFC_SLI_REV3) in lpfc_els_chk_latt()
94 if (lpfc_readl(phba->HAregaddr, &ha_copy)) in lpfc_els_chk_latt()
104 phba->pport->port_state); in lpfc_els_chk_latt()
116 if (phba->link_state != LPFC_CLEAR_LA) in lpfc_els_chk_latt()
117 lpfc_issue_clear_la(phba, vport); in lpfc_els_chk_latt()
156 struct lpfc_hba *phba = vport->phba; in lpfc_prep_els_iocb() local
163 if (!lpfc_is_link_up(phba)) in lpfc_prep_els_iocb()
167 elsiocb = lpfc_sli_get_iocbq(phba); in lpfc_prep_els_iocb()
177 (phba->hba_flag & HBA_FIP_SUPPORT) && in lpfc_prep_els_iocb()
207 pcmd->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &pcmd->phys); in lpfc_prep_els_iocb()
217 prsp->virt = lpfc_mbuf_alloc(phba, MEM_PRI, in lpfc_prep_els_iocb()
228 pbuflist->virt = lpfc_mbuf_alloc(phba, MEM_PRI, in lpfc_prep_els_iocb()
246 icmd->ulpTimeout = phba->fc_ratov * 2; in lpfc_prep_els_iocb()
264 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) || in lpfc_prep_els_iocb()
265 ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_prep_els_iocb()
272 icmd->ulpContext = phba->vpi_ids[vport->vpi]; in lpfc_prep_els_iocb()
307 elsiocb->drvrTimeout = (phba->fc_ratov << 1) + LPFC_DRVR_TIMEOUT; in lpfc_prep_els_iocb()
335 lpfc_mbuf_free(phba, prsp->virt, prsp->phys); in lpfc_prep_els_iocb()
339 lpfc_mbuf_free(phba, pcmd->virt, pcmd->phys); in lpfc_prep_els_iocb()
344 lpfc_sli_release_iocbq(phba, elsiocb); in lpfc_prep_els_iocb()
367 struct lpfc_hba *phba = vport->phba; in lpfc_issue_fabric_reglogin() local
375 sp = &phba->fc_fabparam; in lpfc_issue_fabric_reglogin()
382 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_fabric_reglogin()
389 lpfc_config_link(phba, mbox); in lpfc_issue_fabric_reglogin()
393 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_issue_fabric_reglogin()
399 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_fabric_reglogin()
404 rc = lpfc_reg_rpi(phba, vport->vpi, Fabric_DID, (uint8_t *)sp, mbox, in lpfc_issue_fabric_reglogin()
418 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_issue_fabric_reglogin()
432 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_issue_fabric_reglogin()
435 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_issue_fabric_reglogin()
458 struct lpfc_hba *phba = vport->phba; in lpfc_issue_reg_vfi() local
465 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_issue_reg_vfi()
466 !(phba->link_flag & LS_LOOPBACK_MODE) && in lpfc_issue_reg_vfi()
475 mboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_reg_vfi()
488 dmabuf->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &dmabuf->phys); in lpfc_issue_reg_vfi()
493 memcpy(dmabuf->virt, &phba->fc_fabparam, in lpfc_issue_reg_vfi()
506 rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT); in lpfc_issue_reg_vfi()
515 mempool_free(mboxq, phba->mbox_mem_pool); in lpfc_issue_reg_vfi()
518 lpfc_mbuf_free(phba, dmabuf->virt, dmabuf->phys); in lpfc_issue_reg_vfi()
542 struct lpfc_hba *phba = vport->phba; in lpfc_issue_unreg_vfi() local
547 mboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_unreg_vfi()
549 lpfc_printf_log(phba, KERN_ERR, LOG_DISCOVERY|LOG_MBOX, in lpfc_issue_unreg_vfi()
551 "HBA state x%x\n", phba->pport->port_state); in lpfc_issue_unreg_vfi()
559 rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT); in lpfc_issue_unreg_vfi()
561 lpfc_printf_log(phba, KERN_ERR, LOG_DISCOVERY|LOG_MBOX, in lpfc_issue_unreg_vfi()
564 rc, phba->pport->port_state); in lpfc_issue_unreg_vfi()
565 mempool_free(mboxq, phba->mbox_mem_pool); in lpfc_issue_unreg_vfi()
598 struct lpfc_hba *phba = vport->phba; in lpfc_check_clean_addr_bit() local
622 (vport->fc_prevDID || phba->cfg_delay_discovery)) { in lpfc_check_clean_addr_bit()
657 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_fabric() local
666 phba->fc_edtov = be32_to_cpu(sp->cmn.e_d_tov); in lpfc_cmpl_els_flogi_fabric()
668 phba->fc_edtov = (phba->fc_edtov + 999999) / 1000000; in lpfc_cmpl_els_flogi_fabric()
670 phba->fc_edtovResol = sp->cmn.edtovResolution; in lpfc_cmpl_els_flogi_fabric()
671 phba->fc_ratov = (be32_to_cpu(sp->cmn.w2.r_a_tov) + 999) / 1000; in lpfc_cmpl_els_flogi_fabric()
673 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_cmpl_els_flogi_fabric()
697 if (phba->cfg_enable_SmartSAN || in lpfc_cmpl_els_flogi_fabric()
698 (phba->cfg_fdmi_on == LPFC_FDMI_SUPPORT)) { in lpfc_cmpl_els_flogi_fabric()
701 if (phba->cfg_enable_SmartSAN) in lpfc_cmpl_els_flogi_fabric()
715 memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); in lpfc_cmpl_els_flogi_fabric()
717 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) { in lpfc_cmpl_els_flogi_fabric()
724 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
725 phba->link_flag |= LS_NPIV_FAB_SUPPORTED; in lpfc_cmpl_els_flogi_fabric()
726 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
734 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
735 phba->link_flag &= ~LS_NPIV_FAB_SUPPORTED; in lpfc_cmpl_els_flogi_fabric()
736 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
744 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi_fabric()
745 (phba->sli4_hba.lnk_info.lnk_tp == LPFC_LNK_TYPE_FC)) { in lpfc_cmpl_els_flogi_fabric()
748 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi_fabric()
775 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_cmpl_els_flogi_fabric()
790 } else if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi_fabric()
797 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
801 if (phba->sli_rev < LPFC_SLI_REV4) { in lpfc_cmpl_els_flogi_fabric()
803 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED && in lpfc_cmpl_els_flogi_fabric()
805 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
813 lpfc_start_fdiscs(phba); in lpfc_cmpl_els_flogi_fabric()
814 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_flogi_fabric()
852 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_nport() local
862 phba->sli3_options &= ~LPFC_SLI3_NPIV_ENABLED; in lpfc_cmpl_els_flogi_nport()
865 if ((phba->sli_rev == LPFC_SLI_REV4) && phba->fc_topology_changed) { in lpfc_cmpl_els_flogi_nport()
866 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi_nport()
871 phba->fc_topology_changed = 0; in lpfc_cmpl_els_flogi_nport()
923 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_cmpl_els_flogi_nport()
927 lpfc_config_link(phba, mbox); in lpfc_cmpl_els_flogi_nport()
931 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_cmpl_els_flogi_nport()
933 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_flogi_nport()
976 lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_flogi() argument
1007 if ((phba->hba_flag & HBA_FIP_SUPPORT) && in lpfc_cmpl_els_flogi()
1008 (phba->fcf.fcf_flag & FCF_DISCOVERY)) { in lpfc_cmpl_els_flogi()
1009 if (phba->link_state < LPFC_LINK_UP) in lpfc_cmpl_els_flogi()
1011 if ((phba->fcoe_cvl_eventtag_attn == in lpfc_cmpl_els_flogi()
1012 phba->fcoe_cvl_eventtag) && in lpfc_cmpl_els_flogi()
1018 phba->fcoe_cvl_eventtag_attn = in lpfc_cmpl_els_flogi()
1019 phba->fcoe_cvl_eventtag; in lpfc_cmpl_els_flogi()
1020 lpfc_printf_log(phba, KERN_WARNING, LOG_FIP | LOG_ELS, in lpfc_cmpl_els_flogi()
1024 phba->fcf.current_rec.fcf_indx, in lpfc_cmpl_els_flogi()
1027 lpfc_sli4_set_fcf_flogi_fail(phba, in lpfc_cmpl_els_flogi()
1028 phba->fcf.current_rec.fcf_indx); in lpfc_cmpl_els_flogi()
1029 fcf_index = lpfc_sli4_fcf_rr_next_index_get(phba); in lpfc_cmpl_els_flogi()
1044 irsp->ulpTimeout, phba->hba_flag, in lpfc_cmpl_els_flogi()
1045 phba->fcf.fcf_flag); in lpfc_cmpl_els_flogi()
1048 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) in lpfc_cmpl_els_flogi()
1071 if (phba->alpa_map[0] == 0) in lpfc_cmpl_els_flogi()
1073 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi()
1076 phba->fc_topology_changed)) { in lpfc_cmpl_els_flogi()
1078 if (phba->fc_topology_changed) { in lpfc_cmpl_els_flogi()
1079 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi()
1083 phba->fc_topology_changed = 0; in lpfc_cmpl_els_flogi()
1126 else if (!(phba->hba_flag & HBA_FCOE_MODE)) in lpfc_cmpl_els_flogi()
1136 phba->fcf.current_rec.fcf_indx, in lpfc_cmpl_els_flogi()
1137 phba->fcf.current_rec.switch_name[0], in lpfc_cmpl_els_flogi()
1138 phba->fcf.current_rec.switch_name[1], in lpfc_cmpl_els_flogi()
1139 phba->fcf.current_rec.switch_name[2], in lpfc_cmpl_els_flogi()
1140 phba->fcf.current_rec.switch_name[3], in lpfc_cmpl_els_flogi()
1141 phba->fcf.current_rec.switch_name[4], in lpfc_cmpl_els_flogi()
1142 phba->fcf.current_rec.switch_name[5], in lpfc_cmpl_els_flogi()
1143 phba->fcf.current_rec.switch_name[6], in lpfc_cmpl_els_flogi()
1144 phba->fcf.current_rec.switch_name[7], in lpfc_cmpl_els_flogi()
1145 phba->fcf.current_rec.fabric_name[0], in lpfc_cmpl_els_flogi()
1146 phba->fcf.current_rec.fabric_name[1], in lpfc_cmpl_els_flogi()
1147 phba->fcf.current_rec.fabric_name[2], in lpfc_cmpl_els_flogi()
1148 phba->fcf.current_rec.fabric_name[3], in lpfc_cmpl_els_flogi()
1149 phba->fcf.current_rec.fabric_name[4], in lpfc_cmpl_els_flogi()
1150 phba->fcf.current_rec.fabric_name[5], in lpfc_cmpl_els_flogi()
1151 phba->fcf.current_rec.fabric_name[6], in lpfc_cmpl_els_flogi()
1152 phba->fcf.current_rec.fabric_name[7]); in lpfc_cmpl_els_flogi()
1154 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1155 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1156 phba->hba_flag &= ~(FCF_RR_INPROG | HBA_DEVLOSS_TMO); in lpfc_cmpl_els_flogi()
1157 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1162 if (phba->hba_flag & HBA_FIP_SUPPORT) in lpfc_cmpl_els_flogi()
1167 phba->fcf.current_rec.fcf_indx); in lpfc_cmpl_els_flogi()
1168 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1169 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1170 phba->hba_flag &= ~(FCF_RR_INPROG | HBA_DEVLOSS_TMO); in lpfc_cmpl_els_flogi()
1171 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1177 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1178 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1179 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1194 (phba->link_state != LPFC_CLEAR_LA)) { in lpfc_cmpl_els_flogi()
1196 lpfc_issue_clear_la(phba, vport); in lpfc_cmpl_els_flogi()
1199 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_flogi()
1228 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_flogi() local
1263 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_issue_els_flogi()
1264 if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) == in lpfc_issue_els_flogi()
1270 elsiocb->iocb.ulpContext = phba->fcf.fcfi; in lpfc_issue_els_flogi()
1279 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) { in lpfc_issue_els_flogi()
1288 if (phba->fc_topology != LPFC_TOPOLOGY_LOOP) { in lpfc_issue_els_flogi()
1293 tmo = phba->fc_ratov; in lpfc_issue_els_flogi()
1294 phba->fc_ratov = LPFC_DISC_FLOGI_TMO; in lpfc_issue_els_flogi()
1296 phba->fc_ratov = tmo; in lpfc_issue_els_flogi()
1298 phba->fc_stat.elsXmitFLOGI++; in lpfc_issue_els_flogi()
1303 phba->sli3_options, 0, 0); in lpfc_issue_els_flogi()
1305 rc = lpfc_issue_fabric_iocb(phba, elsiocb); in lpfc_issue_els_flogi()
1307 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_flogi()
1328 lpfc_els_abort_flogi(struct lpfc_hba *phba) in lpfc_els_abort_flogi() argument
1336 lpfc_printf_log(phba, KERN_INFO, LOG_DISCOVERY, in lpfc_els_abort_flogi()
1340 pring = lpfc_phba_elsring(phba); in lpfc_els_abort_flogi()
1346 spin_lock_irq(&phba->hbalock); in lpfc_els_abort_flogi()
1353 lpfc_sli_issue_abort_iotag(phba, pring, iocb); in lpfc_els_abort_flogi()
1356 spin_unlock_irq(&phba->hbalock); in lpfc_els_abort_flogi()
1523 lpfc_plogi_confirm_nport(struct lpfc_hba *phba, uint32_t *prsp, in lpfc_plogi_confirm_nport() argument
1556 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_plogi_confirm_nport()
1557 active_rrqs_xri_bitmap = mempool_alloc(phba->active_rrq_pool, in lpfc_plogi_confirm_nport()
1561 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1574 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1581 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1590 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1598 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1602 if ((phba->sli_rev == LPFC_SLI_REV4) && active_rrqs_xri_bitmap) in lpfc_plogi_confirm_nport()
1605 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1608 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1612 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1618 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_plogi_confirm_nport()
1621 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1672 spin_lock_irq(&phba->ndlp_lock); in lpfc_plogi_confirm_nport()
1674 spin_unlock_irq(&phba->ndlp_lock); in lpfc_plogi_confirm_nport()
1680 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1684 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1698 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1702 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1734 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1737 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1786 lpfc_cmpl_els_rrq(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_rrq() argument
1828 (phba)->pport->cfg_log_verbose & LOG_ELS) in lpfc_cmpl_els_rrq()
1836 lpfc_clr_rrq_active(phba, rrq->xritag, rrq); in lpfc_cmpl_els_rrq()
1837 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_rrq()
1861 lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_plogi() argument
1918 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_plogi()
1931 (phba)->pport->cfg_log_verbose & LOG_ELS) in lpfc_cmpl_els_plogi()
1947 ndlp = lpfc_plogi_confirm_nport(phba, prsp->virt, ndlp); in lpfc_cmpl_els_plogi()
1967 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_plogi()
1995 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_plogi() local
2052 if (phba->sli.sli_flag & LPFC_SLI_SUPPRESS_RSP) { in lpfc_issue_els_plogi()
2058 phba->fc_stat.elsXmitPLOGI++; in lpfc_issue_els_plogi()
2060 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_plogi()
2063 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_plogi()
2083 lpfc_cmpl_els_prli(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_prli() argument
2122 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_prli()
2150 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_prli()
2180 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_prli() local
2194 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_issue_els_prli()
2228 if (phba->sli_rev == LPFC_SLI_REV3 && in lpfc_issue_els_prli()
2261 if (phba->vpd.rev.feaLevelHigh >= 0x02) { in lpfc_issue_els_prli()
2290 if ((phba->cfg_nvme_enable_fb) && in lpfc_issue_els_prli()
2291 !phba->nvmet_support) in lpfc_issue_els_prli()
2294 if (phba->nvmet_support) { in lpfc_issue_els_prli()
2314 phba->fc_stat.elsXmitPRLI++; in lpfc_issue_els_prli()
2326 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_prli()
2331 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_prli()
2339 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_issue_els_prli()
2386 struct lpfc_hba *phba = vport->phba; in lpfc_adisc_done() local
2392 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_adisc_done()
2394 (phba->sli_rev < LPFC_SLI_REV4)) { in lpfc_adisc_done()
2403 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2404 lpfc_issue_reg_vpi(phba, vport); in lpfc_adisc_done()
2413 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2480 lpfc_cmpl_els_adisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_adisc() argument
2523 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_adisc()
2551 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_adisc()
2580 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_adisc() local
2600 ap->hardAL_PA = phba->fc_pref_ALPA; in lpfc_issue_els_adisc()
2609 phba->fc_stat.elsXmitADISC++; in lpfc_issue_els_adisc()
2614 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_adisc()
2619 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_adisc()
2638 lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_logo() argument
2687 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_logo()
2708 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_logo()
2712 phba->pport->fc_myDID = 0; in lpfc_cmpl_els_logo()
2714 if ((phba->cfg_enable_fc4_type == LPFC_ENABLE_BOTH) || in lpfc_cmpl_els_logo()
2715 (phba->cfg_enable_fc4_type == LPFC_ENABLE_NVME)) { in lpfc_cmpl_els_logo()
2716 if (phba->nvmet_support) in lpfc_cmpl_els_logo()
2717 lpfc_nvmet_update_targetport(phba); in lpfc_cmpl_els_logo()
2719 lpfc_nvme_update_localport(phba->pport); in lpfc_cmpl_els_logo()
2722 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_cmpl_els_logo()
2724 lpfc_config_link(phba, mbox); in lpfc_cmpl_els_logo()
2727 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) == in lpfc_cmpl_els_logo()
2729 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_logo()
2782 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_logo() local
2826 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_logo()
2830 phba->fc_stat.elsXmitLOGO++; in lpfc_issue_els_logo()
2836 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_logo()
2842 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_logo()
2865 lpfc_cmpl_els_cmd(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_cmd() argument
2884 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_cmd()
2913 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_scr() local
2957 phba->fc_stat.elsXmitSCR++; in lpfc_issue_els_scr()
2959 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_scr()
2966 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_scr()
3002 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_farpr() local
3063 phba->fc_stat.elsXmitFARPR++; in lpfc_issue_els_farpr()
3065 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_farpr()
3072 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_farpr()
3156 struct lpfc_hba *phba = vport->phba; in lpfc_els_retry_delay() local
3160 spin_lock_irqsave(&phba->hbalock, flags); in lpfc_els_retry_delay()
3162 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_els_retry_delay()
3172 list_add_tail(&evtp->evt_listp, &phba->work_list); in lpfc_els_retry_delay()
3173 lpfc_worker_wake_up(phba); in lpfc_els_retry_delay()
3175 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_els_retry_delay()
3274 lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_els_retry() argument
3318 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_els_retry()
3323 lpfc_set_rrq_active(phba, ndlp, in lpfc_els_retry()
3332 phba->pcidev->device) { in lpfc_els_retry()
3333 phba->fc_topology = LPFC_TOPOLOGY_LOOP; in lpfc_els_retry()
3334 phba->pport->fc_myDID = 0; in lpfc_els_retry()
3335 phba->alpa_map[0] = 0; in lpfc_els_retry()
3336 phba->alpa_map[1] = 0; in lpfc_els_retry()
3441 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_retry()
3491 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_retry()
3540 (phba->fc_topology != LPFC_TOPOLOGY_LOOP) && in lpfc_els_retry()
3545 if (phba->link_flag != LS_LOOPBACK_MODE) in lpfc_els_retry()
3563 phba->fc_stat.elsRetryExceeded++; in lpfc_els_retry()
3574 if (phba->fcf.fcf_flag & FCF_DISCOVERY) { in lpfc_els_retry()
3602 phba->fc_stat.elsXmitRetry++; in lpfc_els_retry()
3604 phba->fc_stat.elsDelayRetry++; in lpfc_els_retry()
3692 lpfc_els_free_data(struct lpfc_hba *phba, struct lpfc_dmabuf *buf_ptr1) in lpfc_els_free_data() argument
3701 lpfc_mbuf_free(phba, buf_ptr->virt, buf_ptr->phys); in lpfc_els_free_data()
3704 lpfc_mbuf_free(phba, buf_ptr1->virt, buf_ptr1->phys); in lpfc_els_free_data()
3722 lpfc_els_free_bpl(struct lpfc_hba *phba, struct lpfc_dmabuf *buf_ptr) in lpfc_els_free_bpl() argument
3724 lpfc_mbuf_free(phba, buf_ptr->virt, buf_ptr->phys); in lpfc_els_free_bpl()
3757 lpfc_els_free_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *elsiocb) in lpfc_els_free_iocb() argument
3793 spin_lock_irq(&phba->hbalock); in lpfc_els_free_iocb()
3800 &phba->elsbuf); in lpfc_els_free_iocb()
3801 phba->elsbuf_cnt++; in lpfc_els_free_iocb()
3804 list_add_tail(&buf_ptr->list, &phba->elsbuf); in lpfc_els_free_iocb()
3805 phba->elsbuf_cnt++; in lpfc_els_free_iocb()
3806 spin_unlock_irq(&phba->hbalock); in lpfc_els_free_iocb()
3810 lpfc_els_free_data(phba, buf_ptr1); in lpfc_els_free_iocb()
3817 lpfc_els_free_bpl(phba, buf_ptr); in lpfc_els_free_iocb()
3820 lpfc_sli_release_iocbq(phba, elsiocb); in lpfc_els_free_iocb()
3842 lpfc_cmpl_els_logo_acc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_logo_acc() argument
3879 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_logo_acc()
3896 lpfc_mbx_cmpl_dflt_rpi(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_mbx_cmpl_dflt_rpi() argument
3904 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_mbx_cmpl_dflt_rpi()
3906 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_mbx_cmpl_dflt_rpi()
3945 lpfc_cmpl_els_rsp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_rsp() argument
3980 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_cmpl_els_rsp()
3983 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
4024 lpfc_mbuf_free(phba, mp->virt, in lpfc_cmpl_els_rsp()
4028 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
4049 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_cmpl_els_rsp()
4091 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_cmpl_els_rsp()
4094 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
4117 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_rsp()
4152 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_acc() local
4209 memcpy(sp, &phba->fc_fabparam, in lpfc_els_rsp_acc()
4238 if (phba->sli.sli_flag & LPFC_SLI_SUPPRESS_RSP) { in lpfc_els_rsp_acc()
4294 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_acc()
4295 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_acc()
4297 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_acc()
4330 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_reject() local
4369 phba->fc_stat.elsXmitLSRJT++; in lpfc_els_rsp_reject()
4371 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_reject()
4374 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_reject()
4403 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_adisc_acc() local
4435 ap->hardAL_PA = phba->fc_pref_ALPA; in lpfc_els_rsp_adisc_acc()
4444 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_adisc_acc()
4446 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_adisc_acc()
4448 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_adisc_acc()
4477 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_prli_acc() local
4538 vpd = &phba->vpd; in lpfc_els_rsp_prli_acc()
4565 if (phba->nvmet_support) { in lpfc_els_rsp_prli_acc()
4568 if (phba->cfg_nvme_enable_fb) { in lpfc_els_rsp_prli_acc()
4576 phba->cfg_nvmet_fb_size); in lpfc_els_rsp_prli_acc()
4602 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_prli_acc()
4605 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_prli_acc()
4607 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_prli_acc()
4643 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rnid_acc() local
4702 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rnid_acc()
4705 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_rnid_acc()
4707 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rnid_acc()
4725 struct lpfc_hba *phba = vport->phba; in lpfc_els_clear_rrq() local
4756 lpfc_clr_rrq_active(phba, xri, prrq); in lpfc_els_clear_rrq()
4775 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_echo_acc() local
4809 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_echo_acc()
4812 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_echo_acc()
4814 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_echo_acc()
5054 if (vport->phba->fc_topology != LPFC_TOPOLOGY_LOOP) { in lpfc_rdp_res_bbc_desc()
5055 bbCredit = vport->phba->fc_fabparam.cmn.bbCreditLsb | in lpfc_rdp_res_bbc_desc()
5056 (vport->phba->fc_fabparam.cmn.bbCreditMsb << 8); in lpfc_rdp_res_bbc_desc()
5069 lpfc_rdp_res_oed_temp_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_temp_desc() argument
5081 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
5083 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
5085 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
5087 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
5097 lpfc_rdp_res_oed_voltage_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_voltage_desc() argument
5110 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
5112 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
5114 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
5116 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
5126 lpfc_rdp_res_oed_txbias_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_txbias_desc() argument
5139 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
5141 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
5143 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
5145 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
5155 lpfc_rdp_res_oed_txpower_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_txpower_desc() argument
5168 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
5170 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
5172 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
5174 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
5185 lpfc_rdp_res_oed_rxpower_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_rxpower_desc() argument
5198 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
5200 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
5202 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
5204 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
5245 lpfc_rdp_res_speed(struct fc_rdp_port_speed_desc *desc, struct lpfc_hba *phba) in lpfc_rdp_res_speed() argument
5252 switch (phba->fc_linkspeed) { in lpfc_rdp_res_speed()
5284 if (phba->lmt & LMT_64Gb) in lpfc_rdp_res_speed()
5286 if (phba->lmt & LMT_32Gb) in lpfc_rdp_res_speed()
5288 if (phba->lmt & LMT_16Gb) in lpfc_rdp_res_speed()
5290 if (phba->lmt & LMT_10Gb) in lpfc_rdp_res_speed()
5292 if (phba->lmt & LMT_8Gb) in lpfc_rdp_res_speed()
5294 if (phba->lmt & LMT_4Gb) in lpfc_rdp_res_speed()
5296 if (phba->lmt & LMT_2Gb) in lpfc_rdp_res_speed()
5298 if (phba->lmt & LMT_1Gb) in lpfc_rdp_res_speed()
5303 if (phba->cfg_link_speed != LPFC_USER_LINK_SPEED_AUTO) in lpfc_rdp_res_speed()
5353 lpfc_els_rdp_cmpl(struct lpfc_hba *phba, struct lpfc_rdp_context *rdp_context, in lpfc_els_rdp_cmpl() argument
5399 phba->sfp_alarm |= *flag_ptr; in lpfc_els_rdp_cmpl()
5401 phba->sfp_warning |= *flag_ptr; in lpfc_els_rdp_cmpl()
5411 phba); in lpfc_els_rdp_cmpl()
5422 len += lpfc_rdp_res_oed_temp_desc(phba, in lpfc_els_rdp_cmpl()
5425 len += lpfc_rdp_res_oed_voltage_desc(phba, in lpfc_els_rdp_cmpl()
5428 len += lpfc_rdp_res_oed_txbias_desc(phba, in lpfc_els_rdp_cmpl()
5431 len += lpfc_rdp_res_oed_txpower_desc(phba, in lpfc_els_rdp_cmpl()
5434 len += lpfc_rdp_res_oed_rxpower_desc(phba, in lpfc_els_rdp_cmpl()
5450 phba->fc_stat.elsXmitACC++; in lpfc_els_rdp_cmpl()
5451 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rdp_cmpl()
5453 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rdp_cmpl()
5475 phba->fc_stat.elsXmitLSRJT++; in lpfc_els_rdp_cmpl()
5477 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rdp_cmpl()
5480 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rdp_cmpl()
5486 lpfc_get_rdp_info(struct lpfc_hba *phba, struct lpfc_rdp_context *rdp_context) in lpfc_get_rdp_info() argument
5491 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_get_rdp_info()
5493 lpfc_printf_log(phba, KERN_WARNING, LOG_MBOX | LOG_ELS, in lpfc_get_rdp_info()
5498 if (lpfc_sli4_dump_page_a0(phba, mbox)) in lpfc_get_rdp_info()
5503 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_get_rdp_info()
5511 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_get_rdp_info()
5536 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rdp() local
5544 if (phba->sli_rev < LPFC_SLI_REV4 || in lpfc_els_rcv_rdp()
5545 bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) != in lpfc_els_rcv_rdp()
5552 if (phba->sli_rev < LPFC_SLI_REV4 || (phba->hba_flag & HBA_FCOE_MODE)) { in lpfc_els_rcv_rdp()
5588 if (lpfc_get_rdp_info(phba, rdp_context)) { in lpfc_els_rcv_rdp()
5612 lpfc_els_lcb_rsp(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_els_lcb_rsp() argument
5637 lpfc_printf_log(phba, KERN_INFO, LOG_MBOX, in lpfc_els_lcb_rsp()
5646 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_lcb_rsp()
5650 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_lcb_rsp()
5652 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_lcb_rsp()
5678 phba->fc_stat.elsXmitACC++; in lpfc_els_lcb_rsp()
5679 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_lcb_rsp()
5681 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_lcb_rsp()
5688 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_lcb_rsp()
5705 phba->fc_stat.elsXmitLSRJT++; in lpfc_els_lcb_rsp()
5706 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_lcb_rsp()
5708 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_lcb_rsp()
5718 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_set_beacon() local
5724 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_sli4_set_beacon()
5731 lpfc_sli4_config(phba, mbox, LPFC_MBOX_SUBSYSTEM_COMMON, in lpfc_sli4_set_beacon()
5735 mbox->vport = phba->pport; in lpfc_sli4_set_beacon()
5738 phba->sli4_hba.physical_port); in lpfc_sli4_set_beacon()
5749 if (phba->sli4_hba.pc_sli4_params.bv1s) { in lpfc_sli4_set_beacon()
5761 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_sli4_set_beacon()
5775 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_sli4_set_beacon()
5777 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_sli4_set_beacon()
5803 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_lcb() local
5831 if (phba->sli_rev < LPFC_SLI_REV4 || in lpfc_els_rcv_lcb()
5832 phba->hba_flag & HBA_FCOE_MODE || in lpfc_els_rcv_lcb()
5833 (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) < in lpfc_els_rcv_lcb()
5884 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_rscn() local
5898 lpfc_in_buf_free(phba, vport->fc_rscn_id_list[i]); in lpfc_els_flush_rscn()
6011 if (vport->phba->nvmet_support) in lpfc_rscn_recovery_check()
6091 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rscn() local
6132 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_rcv_rscn()
6141 if (lpfc_find_vport_by_did(phba, nportid)) in lpfc_els_rcv_rscn()
6366 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_flogi() local
6384 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_els_rcv_flogi()
6408 if (phba->sli_rev < LPFC_SLI_REV4) { in lpfc_els_rcv_flogi()
6409 mbox = mempool_alloc(phba->mbox_mem_pool, in lpfc_els_rcv_flogi()
6413 lpfc_linkdown(phba); in lpfc_els_rcv_flogi()
6414 lpfc_init_link(phba, mbox, in lpfc_els_rcv_flogi()
6415 phba->cfg_topology, in lpfc_els_rcv_flogi()
6416 phba->cfg_link_speed); in lpfc_els_rcv_flogi()
6420 rc = lpfc_sli_issue_mbox(phba, mbox, in lpfc_els_rcv_flogi()
6422 lpfc_set_loopback_flag(phba); in lpfc_els_rcv_flogi()
6424 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_flogi()
6431 lpfc_els_abort_flogi(phba); in lpfc_els_rcv_flogi()
6473 memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); in lpfc_els_rcv_flogi()
6609 if (vport->phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_rcv_rrq()
6633 lpfc_els_rsp_rls_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_els_rsp_rls_acc() argument
6654 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
6659 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_rsp_rls_acc()
6667 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
6686 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
6695 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rls_acc()
6696 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == IOCB_ERROR) in lpfc_els_rsp_rls_acc()
6697 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rls_acc()
6720 lpfc_els_rsp_rps_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_els_rsp_rps_acc() argument
6742 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rps_acc()
6747 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rps_acc()
6748 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_rsp_rps_acc()
6767 if (phba->fc_topology != LPFC_TOPOLOGY_LOOP) in lpfc_els_rsp_rps_acc()
6771 if (phba->pport->fc_flag & FC_FABRIC) in lpfc_els_rsp_rps_acc()
6790 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rps_acc()
6791 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == IOCB_ERROR) in lpfc_els_rsp_rps_acc()
6792 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rps_acc()
6818 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rls() local
6827 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_ATOMIC); in lpfc_els_rcv_rls()
6829 lpfc_read_lnk_stat(phba, mbox); in lpfc_els_rcv_rls()
6836 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_els_rcv_rls()
6844 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_rls()
6881 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rtv() local
6895 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_rcv_rtv()
6913 rtv_rsp->ratov = cpu_to_be32(phba->fc_ratov * 1000); /* report msecs */ in lpfc_els_rcv_rtv()
6914 rtv_rsp->edtov = cpu_to_be32(phba->fc_edtov); in lpfc_els_rcv_rtv()
6915 bf_set(qtov_edtovres, rtv_rsp, phba->fc_edtovResol ? 1 : 0); in lpfc_els_rcv_rtv()
6929 phba->fc_stat.elsXmitACC++; in lpfc_els_rcv_rtv()
6930 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == IOCB_ERROR) in lpfc_els_rcv_rtv()
6931 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rcv_rtv()
6965 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rps() local
6990 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_ATOMIC); in lpfc_els_rcv_rps()
6992 lpfc_read_lnk_stat(phba, mbox); in lpfc_els_rcv_rps()
6999 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_els_rcv_rps()
7007 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_rps()
7038 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rrq() local
7065 bf_set(rrq_oxid, els_rrq, phba->sli4_hba.xri_ids[rrq->xritag]); in lpfc_issue_els_rrq()
7077 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_rrq()
7080 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_rrq()
7099 lpfc_send_rrq(struct lpfc_hba *phba, struct lpfc_node_rrq *rrq) in lpfc_send_rrq() argument
7103 if (lpfc_test_rrq_active(phba, ndlp, rrq->xritag)) in lpfc_send_rrq()
7133 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rpl_acc() local
7173 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rpl_acc()
7174 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_els_rsp_rpl_acc()
7176 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rpl_acc()
7384 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_fan() local
7392 if ((vport == phba->pport) && in lpfc_els_rcv_fan()
7394 if ((memcmp(&phba->fc_fabparam.nodeName, &fp->FnodeName, in lpfc_els_rcv_fan()
7396 (memcmp(&phba->fc_fabparam.portName, &fp->FportName, in lpfc_els_rcv_fan()
7403 if (phba->sli_rev < LPFC_SLI_REV4) in lpfc_els_rcv_fan()
7430 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout() local
7441 lpfc_worker_wake_up(phba); in lpfc_els_timeout()
7458 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout_handler() local
7469 timeout = (uint32_t)(phba->fc_ratov << 1); in lpfc_els_timeout_handler()
7471 pring = lpfc_phba_elsring(phba); in lpfc_els_timeout_handler()
7475 if ((phba->pport->load_flag & FC_UNLOADING)) in lpfc_els_timeout_handler()
7477 spin_lock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
7478 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_timeout_handler()
7481 if ((phba->pport->load_flag & FC_UNLOADING)) { in lpfc_els_timeout_handler()
7482 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_timeout_handler()
7484 spin_unlock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
7527 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_timeout_handler()
7529 spin_unlock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
7537 spin_lock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
7539 lpfc_sli_issue_abort_iotag(phba, pring, piocb); in lpfc_els_timeout_handler()
7540 spin_unlock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
7544 if (!(phba->pport->load_flag & FC_UNLOADING)) in lpfc_els_timeout_handler()
7573 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_cmd() local
7585 spin_lock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
7586 pring = lpfc_phba_elsring(phba); in lpfc_els_flush_cmd()
7590 spin_unlock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
7594 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
7605 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
7607 spin_unlock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
7610 spin_lock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
7612 lpfc_sli_issue_abort_iotag(phba, pring, piocb); in lpfc_els_flush_cmd()
7613 spin_unlock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
7620 spin_lock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
7621 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
7644 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
7646 spin_unlock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
7649 lpfc_sli_cancel_iocbs(phba, &abort_list, in lpfc_els_flush_cmd()
7673 lpfc_els_flush_all_cmd(struct lpfc_hba *phba) in lpfc_els_flush_all_cmd() argument
7676 list_for_each_entry(vport, &phba->port_list, listentry) in lpfc_els_flush_all_cmd()
7692 lpfc_send_els_failure_event(struct lpfc_hba *phba, in lpfc_send_els_failure_event() argument
7844 lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_els_unsol_buffer() argument
7861 if ((phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) == 0) in lpfc_els_unsol_buffer()
7862 lpfc_post_buffer(phba, pring, 1); in lpfc_els_unsol_buffer()
7913 phba->fc_stat.elsRcvFrame++; in lpfc_els_unsol_buffer()
7954 phba->fc_stat.elsRcvPLOGI++; in lpfc_els_unsol_buffer()
7955 ndlp = lpfc_plogi_confirm_nport(phba, payload, ndlp); in lpfc_els_unsol_buffer()
7956 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_els_unsol_buffer()
7957 (phba->pport->fc_flag & FC_PT2PT)) { in lpfc_els_unsol_buffer()
7980 if (!(phba->pport->fc_flag & FC_PT2PT) || in lpfc_els_unsol_buffer()
7981 (phba->pport->fc_flag & FC_PT2PT_PLOGI)) { in lpfc_els_unsol_buffer()
8001 phba->fc_stat.elsRcvFLOGI++; in lpfc_els_unsol_buffer()
8011 phba->fc_stat.elsRcvLOGO++; in lpfc_els_unsol_buffer()
8025 phba->fc_stat.elsRcvPRLO++; in lpfc_els_unsol_buffer()
8035 phba->fc_stat.elsRcvLCB++; in lpfc_els_unsol_buffer()
8039 phba->fc_stat.elsRcvRDP++; in lpfc_els_unsol_buffer()
8043 phba->fc_stat.elsRcvRSCN++; in lpfc_els_unsol_buffer()
8054 phba->fc_stat.elsRcvADISC++; in lpfc_els_unsol_buffer()
8068 phba->fc_stat.elsRcvPDISC++; in lpfc_els_unsol_buffer()
8082 phba->fc_stat.elsRcvFARPR++; in lpfc_els_unsol_buffer()
8090 phba->fc_stat.elsRcvFARP++; in lpfc_els_unsol_buffer()
8098 phba->fc_stat.elsRcvFAN++; in lpfc_els_unsol_buffer()
8107 phba->fc_stat.elsRcvPRLI++; in lpfc_els_unsol_buffer()
8121 phba->fc_stat.elsRcvLIRR++; in lpfc_els_unsol_buffer()
8131 phba->fc_stat.elsRcvRLS++; in lpfc_els_unsol_buffer()
8141 phba->fc_stat.elsRcvRPS++; in lpfc_els_unsol_buffer()
8151 phba->fc_stat.elsRcvRPL++; in lpfc_els_unsol_buffer()
8161 phba->fc_stat.elsRcvRNID++; in lpfc_els_unsol_buffer()
8170 phba->fc_stat.elsRcvRTV++; in lpfc_els_unsol_buffer()
8180 phba->fc_stat.elsRcvRRQ++; in lpfc_els_unsol_buffer()
8190 phba->fc_stat.elsRcvECHO++; in lpfc_els_unsol_buffer()
8238 phba->fc_stat.elsRcvDrop++; in lpfc_els_unsol_buffer()
8254 lpfc_els_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_els_unsol_event() argument
8257 struct lpfc_vport *vport = phba->pport; in lpfc_els_unsol_event()
8268 lpfc_sli_hbqbuf_add_hbqs(phba, LPFC_ELS_HBQ); in lpfc_els_unsol_event()
8272 phba->fc_stat.NoRcvBuf++; in lpfc_els_unsol_event()
8274 if (!(phba->sli3_options & LPFC_SLI3_HBQ_ENABLED)) in lpfc_els_unsol_event()
8275 lpfc_post_buffer(phba, pring, 0); in lpfc_els_unsol_event()
8279 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_unsol_event()
8283 vport = phba->pport; in lpfc_els_unsol_event()
8285 vport = lpfc_find_vport_by_vpid(phba, in lpfc_els_unsol_event()
8298 if (phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) { in lpfc_els_unsol_event()
8303 elsiocb->context2 = lpfc_sli_ringpostbuf_get(phba, pring, in lpfc_els_unsol_event()
8307 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
8313 lpfc_in_buf_free(phba, (struct lpfc_dmabuf *)elsiocb->context2); in lpfc_els_unsol_event()
8318 if ((phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) && in lpfc_els_unsol_event()
8321 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
8324 lpfc_in_buf_free(phba, elsiocb->context2); in lpfc_els_unsol_event()
8371 lpfc_do_scr_ns_plogi(struct lpfc_hba *phba, struct lpfc_vport *vport) in lpfc_do_scr_ns_plogi() argument
8384 lpfc_printf_log(phba, KERN_ERR, LOG_DISCOVERY, in lpfc_do_scr_ns_plogi()
8386 phba->fc_ratov); in lpfc_do_scr_ns_plogi()
8388 jiffies + msecs_to_jiffies(1000 * phba->fc_ratov)); in lpfc_do_scr_ns_plogi()
8397 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_do_scr_ns_plogi()
8409 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_do_scr_ns_plogi()
8430 if ((phba->cfg_enable_SmartSAN || in lpfc_do_scr_ns_plogi()
8431 (phba->cfg_fdmi_on == LPFC_FDMI_SUPPORT)) && in lpfc_do_scr_ns_plogi()
8449 lpfc_cmpl_reg_new_vport(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_cmpl_reg_new_vport() argument
8466 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_cmpl_reg_new_vport()
8486 lpfc_init_vpi(phba, pmb, vport->vpi); in lpfc_cmpl_reg_new_vport()
8489 rc = lpfc_sli_issue_mbox(phba, pmb, in lpfc_cmpl_reg_new_vport()
8503 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
8513 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
8526 if (vport == phba->pport) { in lpfc_cmpl_reg_new_vport()
8527 if (phba->sli_rev < LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
8535 lpfc_start_fdiscs(phba); in lpfc_cmpl_reg_new_vport()
8536 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
8539 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
8547 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_cmpl_reg_new_vport()
8561 lpfc_register_new_vport(struct lpfc_hba *phba, struct lpfc_vport *vport, in lpfc_register_new_vport() argument
8567 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_register_new_vport()
8573 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_register_new_vport()
8579 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_register_new_vport()
8607 lpfc_cancel_all_vport_retry_delay_timer(struct lpfc_hba *phba) in lpfc_cancel_all_vport_retry_delay_timer() argument
8615 link_state = phba->link_state; in lpfc_cancel_all_vport_retry_delay_timer()
8616 lpfc_linkdown(phba); in lpfc_cancel_all_vport_retry_delay_timer()
8617 phba->link_state = link_state; in lpfc_cancel_all_vport_retry_delay_timer()
8619 vports = lpfc_create_vport_work_array(phba); in lpfc_cancel_all_vport_retry_delay_timer()
8622 for (i = 0; i <= phba->max_vports && vports[i] != NULL; i++) { in lpfc_cancel_all_vport_retry_delay_timer()
8628 lpfc_destroy_vport_work_array(phba, vports); in lpfc_cancel_all_vport_retry_delay_timer()
8641 lpfc_retry_pport_discovery(struct lpfc_hba *phba) in lpfc_retry_pport_discovery() argument
8647 lpfc_cancel_all_vport_retry_delay_timer(phba); in lpfc_retry_pport_discovery()
8650 ndlp = lpfc_findnode_did(phba->pport, Fabric_DID); in lpfc_retry_pport_discovery()
8654 shost = lpfc_shost_from_vport(phba->pport); in lpfc_retry_pport_discovery()
8660 phba->pport->port_state = LPFC_FLOGI; in lpfc_retry_pport_discovery()
8674 lpfc_fabric_login_reqd(struct lpfc_hba *phba, in lpfc_fabric_login_reqd() argument
8707 lpfc_cmpl_els_fdisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_fdisc() argument
8729 list_for_each_entry(piocb, &phba->fabric_iocb_list, list) { in lpfc_cmpl_els_fdisc()
8739 if (lpfc_fabric_login_reqd(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_fdisc()
8740 lpfc_retry_pport_discovery(phba); in lpfc_cmpl_els_fdisc()
8745 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) in lpfc_cmpl_els_fdisc()
8757 if (vport->phba->fc_topology == LPFC_TOPOLOGY_LOOP) in lpfc_cmpl_els_fdisc()
8791 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_els_fdisc()
8797 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_els_fdisc()
8802 } else if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_fdisc()
8808 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
8815 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
8817 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_fdisc()
8827 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_fdisc()
8854 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_fdisc() local
8883 if (phba->sli_rev == LPFC_SLI_REV3) { in lpfc_issue_els_fdisc()
8891 memcpy(pcmd, &vport->phba->pport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_fdisc()
8913 phba->fc_stat.elsXmitFDISC++; in lpfc_issue_els_fdisc()
8920 rc = lpfc_issue_fabric_iocb(phba, elsiocb); in lpfc_issue_els_fdisc()
8922 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_fdisc()
8947 lpfc_cmpl_els_npiv_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_npiv_logo() argument
8961 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_npiv_logo()
9003 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_npiv_logo() local
9031 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_npiv_logo()
9036 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_npiv_logo()
9056 struct lpfc_hba *phba = from_timer(phba, t, fabric_block_timer); in lpfc_fabric_block_timeout() local
9060 spin_lock_irqsave(&phba->pport->work_port_lock, iflags); in lpfc_fabric_block_timeout()
9061 tmo_posted = phba->pport->work_port_events & WORKER_FABRIC_BLOCK_TMO; in lpfc_fabric_block_timeout()
9063 phba->pport->work_port_events |= WORKER_FABRIC_BLOCK_TMO; in lpfc_fabric_block_timeout()
9064 spin_unlock_irqrestore(&phba->pport->work_port_lock, iflags); in lpfc_fabric_block_timeout()
9067 lpfc_worker_wake_up(phba); in lpfc_fabric_block_timeout()
9082 lpfc_resume_fabric_iocbs(struct lpfc_hba *phba) in lpfc_resume_fabric_iocbs() argument
9091 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_resume_fabric_iocbs()
9093 if (atomic_read(&phba->fabric_iocb_count) == 0) { in lpfc_resume_fabric_iocbs()
9094 list_remove_head(&phba->fabric_iocb_list, iocb, typeof(*iocb), in lpfc_resume_fabric_iocbs()
9098 atomic_inc(&phba->fabric_iocb_count); in lpfc_resume_fabric_iocbs()
9100 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_resume_fabric_iocbs()
9110 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0); in lpfc_resume_fabric_iocbs()
9119 iocb->iocb_cmpl(phba, iocb, iocb); in lpfc_resume_fabric_iocbs()
9121 atomic_dec(&phba->fabric_iocb_count); in lpfc_resume_fabric_iocbs()
9139 lpfc_unblock_fabric_iocbs(struct lpfc_hba *phba) in lpfc_unblock_fabric_iocbs() argument
9141 clear_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_unblock_fabric_iocbs()
9143 lpfc_resume_fabric_iocbs(phba); in lpfc_unblock_fabric_iocbs()
9157 lpfc_block_fabric_iocbs(struct lpfc_hba *phba) in lpfc_block_fabric_iocbs() argument
9161 blocked = test_and_set_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_block_fabric_iocbs()
9164 mod_timer(&phba->fabric_block_timer, in lpfc_block_fabric_iocbs()
9184 lpfc_cmpl_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_fabric_iocb() argument
9195 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
9201 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
9209 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
9213 BUG_ON(atomic_read(&phba->fabric_iocb_count) == 0); in lpfc_cmpl_fabric_iocb()
9218 cmdiocb->iocb_cmpl(phba, cmdiocb, rspiocb); in lpfc_cmpl_fabric_iocb()
9220 atomic_dec(&phba->fabric_iocb_count); in lpfc_cmpl_fabric_iocb()
9221 if (!test_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags)) { in lpfc_cmpl_fabric_iocb()
9223 lpfc_resume_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
9252 lpfc_issue_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *iocb) in lpfc_issue_fabric_iocb() argument
9258 BUG_ON(atomic_read(&phba->fabric_iocb_count) > 1); in lpfc_issue_fabric_iocb()
9260 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
9261 ready = atomic_read(&phba->fabric_iocb_count) == 0 && in lpfc_issue_fabric_iocb()
9262 !test_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_issue_fabric_iocb()
9266 atomic_inc(&phba->fabric_iocb_count); in lpfc_issue_fabric_iocb()
9267 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
9277 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0); in lpfc_issue_fabric_iocb()
9283 atomic_dec(&phba->fabric_iocb_count); in lpfc_issue_fabric_iocb()
9286 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
9287 list_add_tail(&iocb->list, &phba->fabric_iocb_list); in lpfc_issue_fabric_iocb()
9288 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
9308 struct lpfc_hba *phba = vport->phba; in lpfc_fabric_abort_vport() local
9311 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_vport()
9312 list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, in lpfc_fabric_abort_vport()
9320 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_vport()
9323 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_vport()
9341 struct lpfc_hba *phba = ndlp->phba; in lpfc_fabric_abort_nport() local
9345 pring = lpfc_phba_elsring(phba); in lpfc_fabric_abort_nport()
9350 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_nport()
9351 list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, in lpfc_fabric_abort_nport()
9353 if ((lpfc_check_sli_ndlp(phba, pring, piocb, ndlp))) { in lpfc_fabric_abort_nport()
9358 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_nport()
9361 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_nport()
9376 void lpfc_fabric_abort_hba(struct lpfc_hba *phba) in lpfc_fabric_abort_hba() argument
9380 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_hba()
9381 list_splice_init(&phba->fabric_iocb_list, &completions); in lpfc_fabric_abort_hba()
9382 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_hba()
9385 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_hba()
9399 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_vport_delete_els_xri_aborted() local
9403 spin_lock_irqsave(&phba->hbalock, iflag); in lpfc_sli4_vport_delete_els_xri_aborted()
9404 spin_lock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_vport_delete_els_xri_aborted()
9406 &phba->sli4_hba.lpfc_abts_els_sgl_list, list) { in lpfc_sli4_vport_delete_els_xri_aborted()
9410 spin_unlock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_vport_delete_els_xri_aborted()
9411 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_vport_delete_els_xri_aborted()
9424 lpfc_sli4_els_xri_aborted(struct lpfc_hba *phba, in lpfc_sli4_els_xri_aborted() argument
9436 pring = lpfc_phba_elsring(phba); in lpfc_sli4_els_xri_aborted()
9438 spin_lock_irqsave(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
9439 spin_lock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
9441 &phba->sli4_hba.lpfc_abts_els_sgl_list, list) { in lpfc_sli4_els_xri_aborted()
9447 &phba->sli4_hba.lpfc_els_sgl_list); in lpfc_sli4_els_xri_aborted()
9449 spin_unlock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
9450 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
9451 lpfc_set_rrq_active(phba, ndlp, in lpfc_sli4_els_xri_aborted()
9457 lpfc_worker_wake_up(phba); in lpfc_sli4_els_xri_aborted()
9461 spin_unlock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
9462 lxri = lpfc_sli4_xri_inrange(phba, xri); in lpfc_sli4_els_xri_aborted()
9464 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
9467 spin_lock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
9468 sglq_entry = __lpfc_get_active_sglq(phba, lxri); in lpfc_sli4_els_xri_aborted()
9470 spin_unlock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
9471 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
9475 spin_unlock(&phba->sli4_hba.sgl_list_lock); in lpfc_sli4_els_xri_aborted()
9476 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
9494 struct lpfc_hba *phba; in lpfc_sli_abts_recover_port() local
9498 phba = vport->phba; in lpfc_sli_abts_recover_port()
9500 lpfc_printf_log(phba, KERN_INFO, in lpfc_sli_abts_recover_port()
9505 lpfc_printf_log(phba, KERN_INFO, LOG_SLI, in lpfc_sli_abts_recover_port()