Lines Matching refs:phba
53 static int lpfc_issue_fabric_iocb(struct lpfc_hba *phba,
84 struct lpfc_hba *phba = vport->phba; in lpfc_els_chk_latt() local
88 phba->link_state == LPFC_LINK_DOWN || in lpfc_els_chk_latt()
89 phba->sli_rev > LPFC_SLI_REV3) in lpfc_els_chk_latt()
93 if (lpfc_readl(phba->HAregaddr, &ha_copy)) in lpfc_els_chk_latt()
103 phba->pport->port_state); in lpfc_els_chk_latt()
115 if (phba->link_state != LPFC_CLEAR_LA) in lpfc_els_chk_latt()
116 lpfc_issue_clear_la(phba, vport); in lpfc_els_chk_latt()
155 struct lpfc_hba *phba = vport->phba; in lpfc_prep_els_iocb() local
162 if (!lpfc_is_link_up(phba)) in lpfc_prep_els_iocb()
166 elsiocb = lpfc_sli_get_iocbq(phba); in lpfc_prep_els_iocb()
176 (phba->hba_flag & HBA_FIP_SUPPORT) && in lpfc_prep_els_iocb()
206 pcmd->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &pcmd->phys); in lpfc_prep_els_iocb()
216 prsp->virt = lpfc_mbuf_alloc(phba, MEM_PRI, in lpfc_prep_els_iocb()
227 pbuflist->virt = lpfc_mbuf_alloc(phba, MEM_PRI, in lpfc_prep_els_iocb()
245 icmd->ulpTimeout = phba->fc_ratov * 2; in lpfc_prep_els_iocb()
263 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) || in lpfc_prep_els_iocb()
264 ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_prep_els_iocb()
271 icmd->ulpContext = phba->vpi_ids[vport->vpi]; in lpfc_prep_els_iocb()
306 elsiocb->drvrTimeout = (phba->fc_ratov << 1) + LPFC_DRVR_TIMEOUT; in lpfc_prep_els_iocb()
334 lpfc_mbuf_free(phba, prsp->virt, prsp->phys); in lpfc_prep_els_iocb()
338 lpfc_mbuf_free(phba, pcmd->virt, pcmd->phys); in lpfc_prep_els_iocb()
343 lpfc_sli_release_iocbq(phba, elsiocb); in lpfc_prep_els_iocb()
366 struct lpfc_hba *phba = vport->phba; in lpfc_issue_fabric_reglogin() local
374 sp = &phba->fc_fabparam; in lpfc_issue_fabric_reglogin()
381 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_fabric_reglogin()
388 lpfc_config_link(phba, mbox); in lpfc_issue_fabric_reglogin()
392 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_issue_fabric_reglogin()
398 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_fabric_reglogin()
403 rc = lpfc_reg_rpi(phba, vport->vpi, Fabric_DID, (uint8_t *)sp, mbox, in lpfc_issue_fabric_reglogin()
417 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_issue_fabric_reglogin()
431 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_issue_fabric_reglogin()
434 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_issue_fabric_reglogin()
457 struct lpfc_hba *phba = vport->phba; in lpfc_issue_reg_vfi() local
464 sp = &phba->fc_fabparam; in lpfc_issue_reg_vfi()
466 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_issue_reg_vfi()
467 !(phba->link_flag & LS_LOOPBACK_MODE) && in lpfc_issue_reg_vfi()
481 dmabuf->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &dmabuf->phys); in lpfc_issue_reg_vfi()
487 mboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_reg_vfi()
493 memcpy(dmabuf->virt, &phba->fc_fabparam, sizeof(vport->fc_sparam)); in lpfc_issue_reg_vfi()
499 rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT); in lpfc_issue_reg_vfi()
507 mempool_free(mboxq, phba->mbox_mem_pool); in lpfc_issue_reg_vfi()
509 lpfc_mbuf_free(phba, dmabuf->virt, dmabuf->phys); in lpfc_issue_reg_vfi()
533 struct lpfc_hba *phba = vport->phba; in lpfc_issue_unreg_vfi() local
538 mboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_unreg_vfi()
540 lpfc_printf_log(phba, KERN_ERR, LOG_DISCOVERY|LOG_MBOX, in lpfc_issue_unreg_vfi()
542 "HBA state x%x\n", phba->pport->port_state); in lpfc_issue_unreg_vfi()
550 rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT); in lpfc_issue_unreg_vfi()
552 lpfc_printf_log(phba, KERN_ERR, LOG_DISCOVERY|LOG_MBOX, in lpfc_issue_unreg_vfi()
555 rc, phba->pport->port_state); in lpfc_issue_unreg_vfi()
556 mempool_free(mboxq, phba->mbox_mem_pool); in lpfc_issue_unreg_vfi()
645 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_fabric() local
654 phba->fc_edtov = be32_to_cpu(sp->cmn.e_d_tov); in lpfc_cmpl_els_flogi_fabric()
656 phba->fc_edtov = (phba->fc_edtov + 999999) / 1000000; in lpfc_cmpl_els_flogi_fabric()
658 phba->fc_edtovResol = sp->cmn.edtovResolution; in lpfc_cmpl_els_flogi_fabric()
659 phba->fc_ratov = (be32_to_cpu(sp->cmn.w2.r_a_tov) + 999) / 1000; in lpfc_cmpl_els_flogi_fabric()
661 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_cmpl_els_flogi_fabric()
687 memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); in lpfc_cmpl_els_flogi_fabric()
689 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) { in lpfc_cmpl_els_flogi_fabric()
696 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
697 phba->link_flag |= LS_NPIV_FAB_SUPPORTED; in lpfc_cmpl_els_flogi_fabric()
698 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
706 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
707 phba->link_flag &= ~LS_NPIV_FAB_SUPPORTED; in lpfc_cmpl_els_flogi_fabric()
708 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
716 if (phba->sli4_hba.lnk_info.lnk_tp == LPFC_LNK_TYPE_FC) { in lpfc_cmpl_els_flogi_fabric()
718 if ((phba->sli_rev == LPFC_SLI_REV4) && fabric_param_changed) in lpfc_cmpl_els_flogi_fabric()
719 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi_fabric()
746 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_cmpl_els_flogi_fabric()
761 } else if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi_fabric()
768 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
772 if (phba->sli_rev < LPFC_SLI_REV4) { in lpfc_cmpl_els_flogi_fabric()
774 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED && in lpfc_cmpl_els_flogi_fabric()
776 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
784 lpfc_start_fdiscs(phba); in lpfc_cmpl_els_flogi_fabric()
785 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_flogi_fabric()
823 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_nport() local
831 phba->fc_edtov = FF_DEF_EDTOV; in lpfc_cmpl_els_flogi_nport()
832 phba->fc_ratov = FF_DEF_RATOV; in lpfc_cmpl_els_flogi_nport()
835 memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); in lpfc_cmpl_els_flogi_nport()
852 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_cmpl_els_flogi_nport()
856 lpfc_config_link(phba, mbox); in lpfc_cmpl_els_flogi_nport()
860 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_cmpl_els_flogi_nport()
862 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_flogi_nport()
873 if ((phba->sli_rev == LPFC_SLI_REV4) && rc) in lpfc_cmpl_els_flogi_nport()
887 ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); in lpfc_cmpl_els_flogi_nport()
915 phba->sli3_options &= ~LPFC_SLI3_NPIV_ENABLED; in lpfc_cmpl_els_flogi_nport()
921 if ((phba->sli_rev == LPFC_SLI_REV4) && phba->fc_topology_changed) { in lpfc_cmpl_els_flogi_nport()
922 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi_nport()
934 phba->fc_topology_changed = 0; in lpfc_cmpl_els_flogi_nport()
969 lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_flogi() argument
1000 if ((phba->hba_flag & HBA_FIP_SUPPORT) && in lpfc_cmpl_els_flogi()
1001 (phba->fcf.fcf_flag & FCF_DISCOVERY)) { in lpfc_cmpl_els_flogi()
1002 if (phba->link_state < LPFC_LINK_UP) in lpfc_cmpl_els_flogi()
1004 if ((phba->fcoe_cvl_eventtag_attn == in lpfc_cmpl_els_flogi()
1005 phba->fcoe_cvl_eventtag) && in lpfc_cmpl_els_flogi()
1011 phba->fcoe_cvl_eventtag_attn = in lpfc_cmpl_els_flogi()
1012 phba->fcoe_cvl_eventtag; in lpfc_cmpl_els_flogi()
1013 lpfc_printf_log(phba, KERN_WARNING, LOG_FIP | LOG_ELS, in lpfc_cmpl_els_flogi()
1017 phba->fcf.current_rec.fcf_indx, in lpfc_cmpl_els_flogi()
1020 lpfc_sli4_set_fcf_flogi_fail(phba, in lpfc_cmpl_els_flogi()
1021 phba->fcf.current_rec.fcf_indx); in lpfc_cmpl_els_flogi()
1022 fcf_index = lpfc_sli4_fcf_rr_next_index_get(phba); in lpfc_cmpl_els_flogi()
1036 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) in lpfc_cmpl_els_flogi()
1054 if (phba->alpa_map[0] == 0) in lpfc_cmpl_els_flogi()
1056 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi()
1059 phba->fc_topology_changed)) { in lpfc_cmpl_els_flogi()
1061 if (phba->fc_topology_changed) { in lpfc_cmpl_els_flogi()
1062 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi()
1066 phba->fc_topology_changed = 0; in lpfc_cmpl_els_flogi()
1106 else if (!(phba->hba_flag & HBA_FCOE_MODE)) in lpfc_cmpl_els_flogi()
1116 phba->fcf.current_rec.fcf_indx, in lpfc_cmpl_els_flogi()
1117 phba->fcf.current_rec.switch_name[0], in lpfc_cmpl_els_flogi()
1118 phba->fcf.current_rec.switch_name[1], in lpfc_cmpl_els_flogi()
1119 phba->fcf.current_rec.switch_name[2], in lpfc_cmpl_els_flogi()
1120 phba->fcf.current_rec.switch_name[3], in lpfc_cmpl_els_flogi()
1121 phba->fcf.current_rec.switch_name[4], in lpfc_cmpl_els_flogi()
1122 phba->fcf.current_rec.switch_name[5], in lpfc_cmpl_els_flogi()
1123 phba->fcf.current_rec.switch_name[6], in lpfc_cmpl_els_flogi()
1124 phba->fcf.current_rec.switch_name[7], in lpfc_cmpl_els_flogi()
1125 phba->fcf.current_rec.fabric_name[0], in lpfc_cmpl_els_flogi()
1126 phba->fcf.current_rec.fabric_name[1], in lpfc_cmpl_els_flogi()
1127 phba->fcf.current_rec.fabric_name[2], in lpfc_cmpl_els_flogi()
1128 phba->fcf.current_rec.fabric_name[3], in lpfc_cmpl_els_flogi()
1129 phba->fcf.current_rec.fabric_name[4], in lpfc_cmpl_els_flogi()
1130 phba->fcf.current_rec.fabric_name[5], in lpfc_cmpl_els_flogi()
1131 phba->fcf.current_rec.fabric_name[6], in lpfc_cmpl_els_flogi()
1132 phba->fcf.current_rec.fabric_name[7]); in lpfc_cmpl_els_flogi()
1134 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1135 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1136 phba->hba_flag &= ~(FCF_RR_INPROG | HBA_DEVLOSS_TMO); in lpfc_cmpl_els_flogi()
1137 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1142 if (phba->hba_flag & HBA_FIP_SUPPORT) in lpfc_cmpl_els_flogi()
1147 phba->fcf.current_rec.fcf_indx); in lpfc_cmpl_els_flogi()
1148 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1149 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1150 phba->hba_flag &= ~(FCF_RR_INPROG | HBA_DEVLOSS_TMO); in lpfc_cmpl_els_flogi()
1151 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1170 (phba->link_state != LPFC_CLEAR_LA)) { in lpfc_cmpl_els_flogi()
1172 lpfc_issue_clear_la(phba, vport); in lpfc_cmpl_els_flogi()
1175 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_flogi()
1204 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_flogi() local
1214 pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_issue_els_flogi()
1242 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_issue_els_flogi()
1243 if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) == in lpfc_issue_els_flogi()
1249 elsiocb->iocb.ulpContext = phba->fcf.fcfi; in lpfc_issue_els_flogi()
1258 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) { in lpfc_issue_els_flogi()
1267 if (phba->fc_topology != LPFC_TOPOLOGY_LOOP) { in lpfc_issue_els_flogi()
1272 tmo = phba->fc_ratov; in lpfc_issue_els_flogi()
1273 phba->fc_ratov = LPFC_DISC_FLOGI_TMO; in lpfc_issue_els_flogi()
1275 phba->fc_ratov = tmo; in lpfc_issue_els_flogi()
1277 phba->fc_stat.elsXmitFLOGI++; in lpfc_issue_els_flogi()
1282 phba->sli3_options, 0, 0); in lpfc_issue_els_flogi()
1284 rc = lpfc_issue_fabric_iocb(phba, elsiocb); in lpfc_issue_els_flogi()
1286 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_flogi()
1307 lpfc_els_abort_flogi(struct lpfc_hba *phba) in lpfc_els_abort_flogi() argument
1315 lpfc_printf_log(phba, KERN_INFO, LOG_DISCOVERY, in lpfc_els_abort_flogi()
1319 pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_els_abort_flogi()
1325 spin_lock_irq(&phba->hbalock); in lpfc_els_abort_flogi()
1332 lpfc_sli_issue_abort_iotag(phba, pring, iocb); in lpfc_els_abort_flogi()
1335 spin_unlock_irq(&phba->hbalock); in lpfc_els_abort_flogi()
1359 struct lpfc_hba *phba = vport->phba; in lpfc_initial_flogi() local
1369 ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); in lpfc_initial_flogi()
1413 struct lpfc_hba *phba = vport->phba; in lpfc_initial_fdisc() local
1420 ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); in lpfc_initial_fdisc()
1508 lpfc_plogi_confirm_nport(struct lpfc_hba *phba, uint32_t *prsp, in lpfc_plogi_confirm_nport() argument
1538 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_plogi_confirm_nport()
1539 active_rrqs_xri_bitmap = mempool_alloc(phba->active_rrq_pool, in lpfc_plogi_confirm_nport()
1543 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1556 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1559 new_ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_ATOMIC); in lpfc_plogi_confirm_nport()
1563 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1573 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1581 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1585 if ((phba->sli_rev == LPFC_SLI_REV4) && active_rrqs_xri_bitmap) in lpfc_plogi_confirm_nport()
1588 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1591 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1595 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1601 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_plogi_confirm_nport()
1604 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1639 spin_lock_irq(&phba->ndlp_lock); in lpfc_plogi_confirm_nport()
1641 spin_unlock_irq(&phba->ndlp_lock); in lpfc_plogi_confirm_nport()
1646 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1650 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1662 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1666 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1697 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1700 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1749 lpfc_cmpl_els_rrq(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_rrq() argument
1791 (phba)->pport->cfg_log_verbose & LOG_ELS) in lpfc_cmpl_els_rrq()
1799 lpfc_clr_rrq_active(phba, rrq->xritag, rrq); in lpfc_cmpl_els_rrq()
1800 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_rrq()
1824 lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_plogi() argument
1879 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_plogi()
1892 (phba)->pport->cfg_log_verbose & LOG_ELS) in lpfc_cmpl_els_plogi()
1908 ndlp = lpfc_plogi_confirm_nport(phba, prsp->virt, ndlp); in lpfc_cmpl_els_plogi()
1928 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_plogi()
1956 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_plogi() local
1966 psli = &phba->sli; in lpfc_issue_els_plogi()
2005 phba->fc_stat.elsXmitPLOGI++; in lpfc_issue_els_plogi()
2007 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_plogi()
2010 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_plogi()
2030 lpfc_cmpl_els_prli(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_prli() argument
2039 psli = &phba->sli; in lpfc_cmpl_els_prli()
2067 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_prli()
2087 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_prli()
2117 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_prli() local
2144 if (phba->vpd.rev.feaLevelHigh >= 0x02) { in lpfc_issue_els_prli()
2162 phba->fc_stat.elsXmitPRLI++; in lpfc_issue_els_prli()
2167 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_prli()
2172 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_prli()
2219 struct lpfc_hba *phba = vport->phba; in lpfc_adisc_done() local
2225 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_adisc_done()
2227 (phba->sli_rev < LPFC_SLI_REV4)) { in lpfc_adisc_done()
2236 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2237 lpfc_issue_reg_vpi(phba, vport); in lpfc_adisc_done()
2246 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2313 lpfc_cmpl_els_adisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_adisc() argument
2356 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_adisc()
2384 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_adisc()
2413 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_adisc() local
2435 ap->hardAL_PA = phba->fc_pref_ALPA; in lpfc_issue_els_adisc()
2444 phba->fc_stat.elsXmitADISC++; in lpfc_issue_els_adisc()
2449 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_adisc()
2454 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_adisc()
2473 lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_logo() argument
2485 psli = &phba->sli; in lpfc_cmpl_els_logo()
2524 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_logo()
2545 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_logo()
2549 phba->pport->fc_myDID = 0; in lpfc_cmpl_els_logo()
2550 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_cmpl_els_logo()
2552 lpfc_config_link(phba, mbox); in lpfc_cmpl_els_logo()
2555 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) == in lpfc_cmpl_els_logo()
2557 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_logo()
2610 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_logo() local
2656 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_logo()
2660 phba->fc_stat.elsXmitLOGO++; in lpfc_issue_els_logo()
2666 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_logo()
2672 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_logo()
2695 lpfc_cmpl_els_cmd(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_cmd() argument
2714 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_cmd()
2743 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_scr() local
2751 psli = &phba->sli; in lpfc_issue_els_scr()
2756 ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); in lpfc_issue_els_scr()
2792 phba->fc_stat.elsXmitSCR++; in lpfc_issue_els_scr()
2794 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_scr()
2801 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_scr()
2837 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_farpr() local
2848 psli = &phba->sli; in lpfc_issue_els_farpr()
2853 ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); in lpfc_issue_els_farpr()
2903 phba->fc_stat.elsXmitFARPR++; in lpfc_issue_els_farpr()
2905 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_farpr()
2912 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_farpr()
2996 struct lpfc_hba *phba = vport->phba; in lpfc_els_retry_delay() local
3000 spin_lock_irqsave(&phba->hbalock, flags); in lpfc_els_retry_delay()
3002 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_els_retry_delay()
3012 list_add_tail(&evtp->evt_listp, &phba->work_list); in lpfc_els_retry_delay()
3013 lpfc_worker_wake_up(phba); in lpfc_els_retry_delay()
3015 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_els_retry_delay()
3113 lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_els_retry() argument
3157 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_els_retry()
3162 lpfc_set_rrq_active(phba, ndlp, in lpfc_els_retry()
3171 phba->pcidev->device) { in lpfc_els_retry()
3172 phba->fc_topology = LPFC_TOPOLOGY_LOOP; in lpfc_els_retry()
3173 phba->pport->fc_myDID = 0; in lpfc_els_retry()
3174 phba->alpa_map[0] = 0; in lpfc_els_retry()
3175 phba->alpa_map[1] = 0; in lpfc_els_retry()
3268 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_retry()
3307 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_retry()
3335 (phba->fc_topology != LPFC_TOPOLOGY_LOOP) && in lpfc_els_retry()
3340 if (phba->link_flag != LS_LOOPBACK_MODE) in lpfc_els_retry()
3358 phba->fc_stat.elsRetryExceeded++; in lpfc_els_retry()
3368 if (phba->fcf.fcf_flag & FCF_DISCOVERY) { in lpfc_els_retry()
3396 phba->fc_stat.elsXmitRetry++; in lpfc_els_retry()
3398 phba->fc_stat.elsDelayRetry++; in lpfc_els_retry()
3484 lpfc_els_free_data(struct lpfc_hba *phba, struct lpfc_dmabuf *buf_ptr1) in lpfc_els_free_data() argument
3493 lpfc_mbuf_free(phba, buf_ptr->virt, buf_ptr->phys); in lpfc_els_free_data()
3496 lpfc_mbuf_free(phba, buf_ptr1->virt, buf_ptr1->phys); in lpfc_els_free_data()
3514 lpfc_els_free_bpl(struct lpfc_hba *phba, struct lpfc_dmabuf *buf_ptr) in lpfc_els_free_bpl() argument
3516 lpfc_mbuf_free(phba, buf_ptr->virt, buf_ptr->phys); in lpfc_els_free_bpl()
3549 lpfc_els_free_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *elsiocb) in lpfc_els_free_iocb() argument
3585 spin_lock_irq(&phba->hbalock); in lpfc_els_free_iocb()
3592 &phba->elsbuf); in lpfc_els_free_iocb()
3593 phba->elsbuf_cnt++; in lpfc_els_free_iocb()
3596 list_add_tail(&buf_ptr->list, &phba->elsbuf); in lpfc_els_free_iocb()
3597 phba->elsbuf_cnt++; in lpfc_els_free_iocb()
3598 spin_unlock_irq(&phba->hbalock); in lpfc_els_free_iocb()
3602 lpfc_els_free_data(phba, buf_ptr1); in lpfc_els_free_iocb()
3608 lpfc_els_free_bpl(phba, buf_ptr); in lpfc_els_free_iocb()
3610 lpfc_sli_release_iocbq(phba, elsiocb); in lpfc_els_free_iocb()
3632 lpfc_cmpl_els_logo_acc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_logo_acc() argument
3669 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_logo_acc()
3695 lpfc_mbx_cmpl_dflt_rpi(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_mbx_cmpl_dflt_rpi() argument
3703 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_mbx_cmpl_dflt_rpi()
3705 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_mbx_cmpl_dflt_rpi()
3744 lpfc_cmpl_els_rsp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_rsp() argument
3779 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_cmpl_els_rsp()
3782 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
3828 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_cmpl_els_rsp()
3869 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_cmpl_els_rsp()
3872 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
3894 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_rsp()
3929 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_acc() local
3939 psli = &phba->sli; in lpfc_els_rsp_acc()
4030 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_acc()
4031 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_acc()
4033 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_acc()
4066 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_reject() local
4075 psli = &phba->sli; in lpfc_els_rsp_reject()
4107 phba->fc_stat.elsXmitLSRJT++; in lpfc_els_rsp_reject()
4109 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_reject()
4112 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_reject()
4141 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_adisc_acc() local
4173 ap->hardAL_PA = phba->fc_pref_ALPA; in lpfc_els_rsp_adisc_acc()
4182 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_adisc_acc()
4184 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_adisc_acc()
4186 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_adisc_acc()
4215 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_prli_acc() local
4226 psli = &phba->sli; in lpfc_els_rsp_prli_acc()
4255 vpd = &phba->vpd; in lpfc_els_rsp_prli_acc()
4279 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_prli_acc()
4282 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_prli_acc()
4284 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_prli_acc()
4320 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rnid_acc() local
4329 psli = &phba->sli; in lpfc_els_rsp_rnid_acc()
4381 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rnid_acc()
4384 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_rnid_acc()
4386 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rnid_acc()
4404 struct lpfc_hba *phba = vport->phba; in lpfc_els_clear_rrq() local
4435 lpfc_clr_rrq_active(phba, xri, prrq); in lpfc_els_clear_rrq()
4454 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_echo_acc() local
4461 psli = &phba->sli; in lpfc_els_rsp_echo_acc()
4490 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_echo_acc()
4493 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_echo_acc()
4495 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_echo_acc()
4631 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_rscn() local
4645 lpfc_in_buf_free(phba, vport->fc_rscn_id_list[i]); in lpfc_els_flush_rscn()
4833 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rscn() local
4876 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_rcv_rscn()
4885 if (lpfc_find_vport_by_did(phba, nportid)) in lpfc_els_rcv_rscn()
5022 struct lpfc_hba *phba = vport->phba; in lpfc_els_handle_rscn() local
5069 ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); in lpfc_els_handle_rscn()
5120 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_flogi() local
5139 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_els_rcv_flogi()
5161 if (phba->sli_rev < LPFC_SLI_REV4) { in lpfc_els_rcv_flogi()
5162 mbox = mempool_alloc(phba->mbox_mem_pool, in lpfc_els_rcv_flogi()
5166 lpfc_linkdown(phba); in lpfc_els_rcv_flogi()
5167 lpfc_init_link(phba, mbox, in lpfc_els_rcv_flogi()
5168 phba->cfg_topology, in lpfc_els_rcv_flogi()
5169 phba->cfg_link_speed); in lpfc_els_rcv_flogi()
5173 rc = lpfc_sli_issue_mbox(phba, mbox, in lpfc_els_rcv_flogi()
5175 lpfc_set_loopback_flag(phba); in lpfc_els_rcv_flogi()
5177 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_flogi()
5183 lpfc_els_abort_flogi(phba); in lpfc_els_rcv_flogi()
5256 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_els_rcv_flogi()
5260 lpfc_config_link(phba, mbox); in lpfc_els_rcv_flogi()
5264 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_els_rcv_flogi()
5266 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_flogi()
5403 if (vport->phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_rcv_rrq()
5427 lpfc_els_rsp_rls_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_els_rsp_rls_acc() argument
5448 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
5453 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_rsp_rls_acc()
5461 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
5480 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
5489 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rls_acc()
5490 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == IOCB_ERROR) in lpfc_els_rsp_rls_acc()
5491 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rls_acc()
5514 lpfc_els_rsp_rps_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_els_rsp_rps_acc() argument
5536 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rps_acc()
5541 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rps_acc()
5542 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_rsp_rps_acc()
5561 if (phba->fc_topology != LPFC_TOPOLOGY_LOOP) in lpfc_els_rsp_rps_acc()
5565 if (phba->pport->fc_flag & FC_FABRIC) in lpfc_els_rsp_rps_acc()
5584 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rps_acc()
5585 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == IOCB_ERROR) in lpfc_els_rsp_rps_acc()
5586 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rps_acc()
5612 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rls() local
5624 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_ATOMIC); in lpfc_els_rcv_rls()
5626 lpfc_read_lnk_stat(phba, mbox); in lpfc_els_rcv_rls()
5633 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_els_rcv_rls()
5641 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_rls()
5678 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rtv() local
5692 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_rcv_rtv()
5710 rtv_rsp->ratov = cpu_to_be32(phba->fc_ratov * 1000); /* report msecs */ in lpfc_els_rcv_rtv()
5711 rtv_rsp->edtov = cpu_to_be32(phba->fc_edtov); in lpfc_els_rcv_rtv()
5712 bf_set(qtov_edtovres, rtv_rsp, phba->fc_edtovResol ? 1 : 0); in lpfc_els_rcv_rtv()
5726 phba->fc_stat.elsXmitACC++; in lpfc_els_rcv_rtv()
5727 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == IOCB_ERROR) in lpfc_els_rcv_rtv()
5728 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rcv_rtv()
5762 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rps() local
5787 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_ATOMIC); in lpfc_els_rcv_rps()
5789 lpfc_read_lnk_stat(phba, mbox); in lpfc_els_rcv_rps()
5796 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_els_rcv_rps()
5804 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_rps()
5835 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rrq() local
5864 bf_set(rrq_oxid, els_rrq, phba->sli4_hba.xri_ids[rrq->xritag]); in lpfc_issue_els_rrq()
5876 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_rrq()
5879 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_rrq()
5898 lpfc_send_rrq(struct lpfc_hba *phba, struct lpfc_node_rrq *rrq) in lpfc_send_rrq() argument
5902 if (lpfc_test_rrq_active(phba, ndlp, rrq->xritag)) in lpfc_send_rrq()
5932 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rpl_acc() local
5972 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rpl_acc()
5973 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_els_rsp_rpl_acc()
5975 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rpl_acc()
6183 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_fan() local
6191 if ((vport == phba->pport) && in lpfc_els_rcv_fan()
6193 if ((memcmp(&phba->fc_fabparam.nodeName, &fp->FnodeName, in lpfc_els_rcv_fan()
6195 (memcmp(&phba->fc_fabparam.portName, &fp->FportName, in lpfc_els_rcv_fan()
6202 if (phba->sli_rev < LPFC_SLI_REV4) in lpfc_els_rcv_fan()
6229 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout() local
6240 lpfc_worker_wake_up(phba); in lpfc_els_timeout()
6257 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout_handler() local
6268 timeout = (uint32_t)(phba->fc_ratov << 1); in lpfc_els_timeout_handler()
6270 pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_els_timeout_handler()
6271 if ((phba->pport->load_flag & FC_UNLOADING)) in lpfc_els_timeout_handler()
6273 spin_lock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
6274 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_timeout_handler()
6277 if ((phba->pport->load_flag & FC_UNLOADING)) { in lpfc_els_timeout_handler()
6278 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_timeout_handler()
6280 spin_unlock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
6323 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_timeout_handler()
6325 spin_unlock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
6333 spin_lock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
6335 lpfc_sli_issue_abort_iotag(phba, pring, piocb); in lpfc_els_timeout_handler()
6336 spin_unlock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
6339 if (!list_empty(&phba->sli.ring[LPFC_ELS_RING].txcmplq)) in lpfc_els_timeout_handler()
6340 if (!(phba->pport->load_flag & FC_UNLOADING)) in lpfc_els_timeout_handler()
6369 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_cmd() local
6370 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_els_flush_cmd()
6381 spin_lock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
6382 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
6393 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
6395 spin_unlock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
6398 spin_lock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
6400 lpfc_sli_issue_abort_iotag(phba, pring, piocb); in lpfc_els_flush_cmd()
6401 spin_unlock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
6408 spin_lock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
6409 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
6432 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
6434 spin_unlock_irq(&phba->hbalock); in lpfc_els_flush_cmd()
6437 lpfc_sli_cancel_iocbs(phba, &abort_list, in lpfc_els_flush_cmd()
6461 lpfc_els_flush_all_cmd(struct lpfc_hba *phba) in lpfc_els_flush_all_cmd() argument
6464 list_for_each_entry(vport, &phba->port_list, listentry) in lpfc_els_flush_all_cmd()
6480 lpfc_send_els_failure_event(struct lpfc_hba *phba, in lpfc_send_els_failure_event() argument
6632 lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_els_unsol_buffer() argument
6649 if ((phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) == 0) in lpfc_els_unsol_buffer()
6650 lpfc_post_buffer(phba, pring, 1); in lpfc_els_unsol_buffer()
6676 ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); in lpfc_els_unsol_buffer()
6703 phba->fc_stat.elsRcvFrame++; in lpfc_els_unsol_buffer()
6730 phba->fc_stat.elsRcvPLOGI++; in lpfc_els_unsol_buffer()
6731 ndlp = lpfc_plogi_confirm_nport(phba, payload, ndlp); in lpfc_els_unsol_buffer()
6732 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_els_unsol_buffer()
6733 (phba->pport->fc_flag & FC_PT2PT)) { in lpfc_els_unsol_buffer()
6756 if (!(phba->pport->fc_flag & FC_PT2PT) || in lpfc_els_unsol_buffer()
6757 (phba->pport->fc_flag & FC_PT2PT_PLOGI)) { in lpfc_els_unsol_buffer()
6766 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_els_unsol_buffer()
6767 (phba->fc_topology_changed || in lpfc_els_unsol_buffer()
6769 lpfc_unregister_fcf_prep(phba); in lpfc_els_unsol_buffer()
6773 phba->fc_topology_changed = 0; in lpfc_els_unsol_buffer()
6791 phba->fc_stat.elsRcvFLOGI++; in lpfc_els_unsol_buffer()
6801 phba->fc_stat.elsRcvLOGO++; in lpfc_els_unsol_buffer()
6815 phba->fc_stat.elsRcvPRLO++; in lpfc_els_unsol_buffer()
6825 phba->fc_stat.elsRcvRSCN++; in lpfc_els_unsol_buffer()
6836 phba->fc_stat.elsRcvADISC++; in lpfc_els_unsol_buffer()
6850 phba->fc_stat.elsRcvPDISC++; in lpfc_els_unsol_buffer()
6864 phba->fc_stat.elsRcvFARPR++; in lpfc_els_unsol_buffer()
6872 phba->fc_stat.elsRcvFARP++; in lpfc_els_unsol_buffer()
6880 phba->fc_stat.elsRcvFAN++; in lpfc_els_unsol_buffer()
6888 phba->fc_stat.elsRcvPRLI++; in lpfc_els_unsol_buffer()
6901 phba->fc_stat.elsRcvLIRR++; in lpfc_els_unsol_buffer()
6911 phba->fc_stat.elsRcvRLS++; in lpfc_els_unsol_buffer()
6921 phba->fc_stat.elsRcvRPS++; in lpfc_els_unsol_buffer()
6931 phba->fc_stat.elsRcvRPL++; in lpfc_els_unsol_buffer()
6941 phba->fc_stat.elsRcvRNID++; in lpfc_els_unsol_buffer()
6950 phba->fc_stat.elsRcvRTV++; in lpfc_els_unsol_buffer()
6960 phba->fc_stat.elsRcvRRQ++; in lpfc_els_unsol_buffer()
6970 phba->fc_stat.elsRcvECHO++; in lpfc_els_unsol_buffer()
7017 phba->fc_stat.elsRcvDrop++; in lpfc_els_unsol_buffer()
7033 lpfc_els_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_els_unsol_event() argument
7036 struct lpfc_vport *vport = phba->pport; in lpfc_els_unsol_event()
7047 lpfc_sli_hbqbuf_add_hbqs(phba, LPFC_ELS_HBQ); in lpfc_els_unsol_event()
7051 phba->fc_stat.NoRcvBuf++; in lpfc_els_unsol_event()
7053 if (!(phba->sli3_options & LPFC_SLI3_HBQ_ENABLED)) in lpfc_els_unsol_event()
7054 lpfc_post_buffer(phba, pring, 0); in lpfc_els_unsol_event()
7058 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_unsol_event()
7062 vport = phba->pport; in lpfc_els_unsol_event()
7064 vport = lpfc_find_vport_by_vpid(phba, in lpfc_els_unsol_event()
7077 if (phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) { in lpfc_els_unsol_event()
7082 elsiocb->context2 = lpfc_sli_ringpostbuf_get(phba, pring, in lpfc_els_unsol_event()
7086 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
7092 lpfc_in_buf_free(phba, (struct lpfc_dmabuf *)elsiocb->context2); in lpfc_els_unsol_event()
7097 if ((phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) && in lpfc_els_unsol_event()
7100 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
7103 lpfc_in_buf_free(phba, elsiocb->context2); in lpfc_els_unsol_event()
7123 lpfc_do_scr_ns_plogi(struct lpfc_hba *phba, struct lpfc_vport *vport) in lpfc_do_scr_ns_plogi() argument
7136 lpfc_printf_log(phba, KERN_ERR, LOG_DISCOVERY, in lpfc_do_scr_ns_plogi()
7138 phba->fc_ratov); in lpfc_do_scr_ns_plogi()
7140 jiffies + msecs_to_jiffies(1000 * phba->fc_ratov)); in lpfc_do_scr_ns_plogi()
7147 ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); in lpfc_do_scr_ns_plogi()
7149 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_do_scr_ns_plogi()
7162 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_do_scr_ns_plogi()
7190 ndlp_fdmi = mempool_alloc(phba->nlp_mem_pool, in lpfc_do_scr_ns_plogi()
7224 lpfc_cmpl_reg_new_vport(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_cmpl_reg_new_vport() argument
7241 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_cmpl_reg_new_vport()
7261 lpfc_init_vpi(phba, pmb, vport->vpi); in lpfc_cmpl_reg_new_vport()
7264 rc = lpfc_sli_issue_mbox(phba, pmb, in lpfc_cmpl_reg_new_vport()
7278 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
7295 if (vport == phba->pport) { in lpfc_cmpl_reg_new_vport()
7296 if (phba->sli_rev < LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
7304 lpfc_start_fdiscs(phba); in lpfc_cmpl_reg_new_vport()
7305 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
7308 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
7316 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_cmpl_reg_new_vport()
7330 lpfc_register_new_vport(struct lpfc_hba *phba, struct lpfc_vport *vport, in lpfc_register_new_vport() argument
7336 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_register_new_vport()
7342 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_register_new_vport()
7348 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_register_new_vport()
7376 lpfc_cancel_all_vport_retry_delay_timer(struct lpfc_hba *phba) in lpfc_cancel_all_vport_retry_delay_timer() argument
7384 link_state = phba->link_state; in lpfc_cancel_all_vport_retry_delay_timer()
7385 lpfc_linkdown(phba); in lpfc_cancel_all_vport_retry_delay_timer()
7386 phba->link_state = link_state; in lpfc_cancel_all_vport_retry_delay_timer()
7388 vports = lpfc_create_vport_work_array(phba); in lpfc_cancel_all_vport_retry_delay_timer()
7391 for (i = 0; i <= phba->max_vports && vports[i] != NULL; i++) { in lpfc_cancel_all_vport_retry_delay_timer()
7397 lpfc_destroy_vport_work_array(phba, vports); in lpfc_cancel_all_vport_retry_delay_timer()
7410 lpfc_retry_pport_discovery(struct lpfc_hba *phba) in lpfc_retry_pport_discovery() argument
7416 lpfc_cancel_all_vport_retry_delay_timer(phba); in lpfc_retry_pport_discovery()
7419 ndlp = lpfc_findnode_did(phba->pport, Fabric_DID); in lpfc_retry_pport_discovery()
7423 shost = lpfc_shost_from_vport(phba->pport); in lpfc_retry_pport_discovery()
7429 phba->pport->port_state = LPFC_FLOGI; in lpfc_retry_pport_discovery()
7443 lpfc_fabric_login_reqd(struct lpfc_hba *phba, in lpfc_fabric_login_reqd() argument
7476 lpfc_cmpl_els_fdisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_fdisc() argument
7498 list_for_each_entry(piocb, &phba->fabric_iocb_list, list) { in lpfc_cmpl_els_fdisc()
7508 if (lpfc_fabric_login_reqd(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_fdisc()
7509 lpfc_retry_pport_discovery(phba); in lpfc_cmpl_els_fdisc()
7514 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) in lpfc_cmpl_els_fdisc()
7526 if (vport->phba->fc_topology == LPFC_TOPOLOGY_LOOP) in lpfc_cmpl_els_fdisc()
7560 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_els_fdisc()
7566 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_els_fdisc()
7571 } else if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_fdisc()
7577 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
7584 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
7586 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_fdisc()
7594 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_fdisc()
7621 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_fdisc() local
7650 if (phba->sli_rev == LPFC_SLI_REV3) { in lpfc_issue_els_fdisc()
7658 memcpy(pcmd, &vport->phba->pport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_fdisc()
7679 phba->fc_stat.elsXmitFDISC++; in lpfc_issue_els_fdisc()
7686 rc = lpfc_issue_fabric_iocb(phba, elsiocb); in lpfc_issue_els_fdisc()
7688 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_fdisc()
7713 lpfc_cmpl_els_npiv_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_npiv_logo() argument
7727 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_npiv_logo()
7767 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_npiv_logo() local
7797 if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) == in lpfc_issue_els_npiv_logo()
7802 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_npiv_logo()
7822 struct lpfc_hba *phba = (struct lpfc_hba *) ptr; in lpfc_fabric_block_timeout() local
7826 spin_lock_irqsave(&phba->pport->work_port_lock, iflags); in lpfc_fabric_block_timeout()
7827 tmo_posted = phba->pport->work_port_events & WORKER_FABRIC_BLOCK_TMO; in lpfc_fabric_block_timeout()
7829 phba->pport->work_port_events |= WORKER_FABRIC_BLOCK_TMO; in lpfc_fabric_block_timeout()
7830 spin_unlock_irqrestore(&phba->pport->work_port_lock, iflags); in lpfc_fabric_block_timeout()
7833 lpfc_worker_wake_up(phba); in lpfc_fabric_block_timeout()
7848 lpfc_resume_fabric_iocbs(struct lpfc_hba *phba) in lpfc_resume_fabric_iocbs() argument
7857 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_resume_fabric_iocbs()
7859 if (atomic_read(&phba->fabric_iocb_count) == 0) { in lpfc_resume_fabric_iocbs()
7860 list_remove_head(&phba->fabric_iocb_list, iocb, typeof(*iocb), in lpfc_resume_fabric_iocbs()
7864 atomic_inc(&phba->fabric_iocb_count); in lpfc_resume_fabric_iocbs()
7866 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_resume_fabric_iocbs()
7876 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0); in lpfc_resume_fabric_iocbs()
7885 iocb->iocb_cmpl(phba, iocb, iocb); in lpfc_resume_fabric_iocbs()
7887 atomic_dec(&phba->fabric_iocb_count); in lpfc_resume_fabric_iocbs()
7905 lpfc_unblock_fabric_iocbs(struct lpfc_hba *phba) in lpfc_unblock_fabric_iocbs() argument
7907 clear_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_unblock_fabric_iocbs()
7909 lpfc_resume_fabric_iocbs(phba); in lpfc_unblock_fabric_iocbs()
7923 lpfc_block_fabric_iocbs(struct lpfc_hba *phba) in lpfc_block_fabric_iocbs() argument
7927 blocked = test_and_set_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_block_fabric_iocbs()
7930 mod_timer(&phba->fabric_block_timer, in lpfc_block_fabric_iocbs()
7950 lpfc_cmpl_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_fabric_iocb() argument
7962 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
7968 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
7976 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
7980 if (atomic_read(&phba->fabric_iocb_count) == 0) in lpfc_cmpl_fabric_iocb()
7986 cmdiocb->iocb_cmpl(phba, cmdiocb, rspiocb); in lpfc_cmpl_fabric_iocb()
7988 atomic_dec(&phba->fabric_iocb_count); in lpfc_cmpl_fabric_iocb()
7989 if (!test_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags)) { in lpfc_cmpl_fabric_iocb()
7991 lpfc_resume_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
8020 lpfc_issue_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *iocb) in lpfc_issue_fabric_iocb() argument
8026 if (atomic_read(&phba->fabric_iocb_count) > 1) in lpfc_issue_fabric_iocb()
8029 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
8030 ready = atomic_read(&phba->fabric_iocb_count) == 0 && in lpfc_issue_fabric_iocb()
8031 !test_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_issue_fabric_iocb()
8035 atomic_inc(&phba->fabric_iocb_count); in lpfc_issue_fabric_iocb()
8036 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
8046 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0); in lpfc_issue_fabric_iocb()
8052 atomic_dec(&phba->fabric_iocb_count); in lpfc_issue_fabric_iocb()
8055 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
8056 list_add_tail(&iocb->list, &phba->fabric_iocb_list); in lpfc_issue_fabric_iocb()
8057 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
8077 struct lpfc_hba *phba = vport->phba; in lpfc_fabric_abort_vport() local
8080 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_vport()
8081 list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, in lpfc_fabric_abort_vport()
8089 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_vport()
8092 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_vport()
8110 struct lpfc_hba *phba = ndlp->phba; in lpfc_fabric_abort_nport() local
8112 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_fabric_abort_nport()
8114 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_nport()
8115 list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, in lpfc_fabric_abort_nport()
8117 if ((lpfc_check_sli_ndlp(phba, pring, piocb, ndlp))) { in lpfc_fabric_abort_nport()
8122 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_nport()
8125 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_nport()
8140 void lpfc_fabric_abort_hba(struct lpfc_hba *phba) in lpfc_fabric_abort_hba() argument
8144 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_hba()
8145 list_splice_init(&phba->fabric_iocb_list, &completions); in lpfc_fabric_abort_hba()
8146 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_hba()
8149 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_hba()
8163 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_vport_delete_els_xri_aborted() local
8167 spin_lock_irqsave(&phba->hbalock, iflag); in lpfc_sli4_vport_delete_els_xri_aborted()
8168 spin_lock(&phba->sli4_hba.abts_sgl_list_lock); in lpfc_sli4_vport_delete_els_xri_aborted()
8170 &phba->sli4_hba.lpfc_abts_els_sgl_list, list) { in lpfc_sli4_vport_delete_els_xri_aborted()
8174 spin_unlock(&phba->sli4_hba.abts_sgl_list_lock); in lpfc_sli4_vport_delete_els_xri_aborted()
8175 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_vport_delete_els_xri_aborted()
8188 lpfc_sli4_els_xri_aborted(struct lpfc_hba *phba, in lpfc_sli4_els_xri_aborted() argument
8198 struct lpfc_sli_ring *pring = &phba->sli.ring[LPFC_ELS_RING]; in lpfc_sli4_els_xri_aborted()
8200 spin_lock_irqsave(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
8201 spin_lock(&phba->sli4_hba.abts_sgl_list_lock); in lpfc_sli4_els_xri_aborted()
8203 &phba->sli4_hba.lpfc_abts_els_sgl_list, list) { in lpfc_sli4_els_xri_aborted()
8210 &phba->sli4_hba.lpfc_sgl_list); in lpfc_sli4_els_xri_aborted()
8213 spin_unlock(&phba->sli4_hba.abts_sgl_list_lock); in lpfc_sli4_els_xri_aborted()
8214 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
8215 lpfc_set_rrq_active(phba, ndlp, in lpfc_sli4_els_xri_aborted()
8221 lpfc_worker_wake_up(phba); in lpfc_sli4_els_xri_aborted()
8225 spin_unlock(&phba->sli4_hba.abts_sgl_list_lock); in lpfc_sli4_els_xri_aborted()
8226 lxri = lpfc_sli4_xri_inrange(phba, xri); in lpfc_sli4_els_xri_aborted()
8228 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
8232 sglq_entry = __lpfc_get_active_sglq(phba, lxri); in lpfc_sli4_els_xri_aborted()
8235 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
8240 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
8258 struct lpfc_hba *phba; in lpfc_sli_abts_recover_port() local
8262 phba = vport->phba; in lpfc_sli_abts_recover_port()
8264 lpfc_printf_log(phba, KERN_INFO, in lpfc_sli_abts_recover_port()
8269 lpfc_printf_log(phba, KERN_INFO, LOG_SLI, in lpfc_sli_abts_recover_port()