Lines Matching refs:phba

57 static int lpfc_issue_fabric_iocb(struct lpfc_hba *phba,
59 static void lpfc_cmpl_els_edc(struct lpfc_hba *phba,
97 struct lpfc_hba *phba = vport->phba; in lpfc_els_chk_latt() local
101 phba->link_state == LPFC_LINK_DOWN || in lpfc_els_chk_latt()
102 phba->sli_rev > LPFC_SLI_REV3) in lpfc_els_chk_latt()
106 if (lpfc_readl(phba->HAregaddr, &ha_copy)) in lpfc_els_chk_latt()
116 phba->pport->port_state); in lpfc_els_chk_latt()
128 if (phba->link_state != LPFC_CLEAR_LA) in lpfc_els_chk_latt()
129 lpfc_issue_clear_la(phba, vport); in lpfc_els_chk_latt()
168 struct lpfc_hba *phba = vport->phba; in lpfc_prep_els_iocb() local
175 if (!lpfc_is_link_up(phba)) in lpfc_prep_els_iocb()
179 elsiocb = lpfc_sli_get_iocbq(phba); in lpfc_prep_els_iocb()
189 (phba->hba_flag & HBA_FIP_SUPPORT) && in lpfc_prep_els_iocb()
219 pcmd->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &pcmd->phys); in lpfc_prep_els_iocb()
229 prsp->virt = lpfc_mbuf_alloc(phba, MEM_PRI, in lpfc_prep_els_iocb()
240 pbuflist->virt = lpfc_mbuf_alloc(phba, MEM_PRI, in lpfc_prep_els_iocb()
258 icmd->ulpTimeout = phba->fc_ratov; in lpfc_prep_els_iocb()
260 icmd->ulpTimeout = phba->fc_ratov * 2; in lpfc_prep_els_iocb()
278 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) || in lpfc_prep_els_iocb()
279 ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_prep_els_iocb()
286 icmd->ulpContext = phba->vpi_ids[vport->vpi]; in lpfc_prep_els_iocb()
317 elsiocb->drvrTimeout = (phba->fc_ratov << 1) + LPFC_DRVR_TIMEOUT; in lpfc_prep_els_iocb()
345 lpfc_mbuf_free(phba, prsp->virt, prsp->phys); in lpfc_prep_els_iocb()
349 lpfc_mbuf_free(phba, pcmd->virt, pcmd->phys); in lpfc_prep_els_iocb()
354 lpfc_sli_release_iocbq(phba, elsiocb); in lpfc_prep_els_iocb()
377 struct lpfc_hba *phba = vport->phba; in lpfc_issue_fabric_reglogin() local
385 sp = &phba->fc_fabparam; in lpfc_issue_fabric_reglogin()
392 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_fabric_reglogin()
399 lpfc_config_link(phba, mbox); in lpfc_issue_fabric_reglogin()
403 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_issue_fabric_reglogin()
409 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_fabric_reglogin()
414 rc = lpfc_reg_rpi(phba, vport->vpi, Fabric_DID, (uint8_t *)sp, mbox, in lpfc_issue_fabric_reglogin()
432 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_issue_fabric_reglogin()
447 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_issue_fabric_reglogin()
450 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_issue_fabric_reglogin()
474 struct lpfc_hba *phba = vport->phba; in lpfc_issue_reg_vfi() local
481 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_issue_reg_vfi()
482 !(phba->link_flag & LS_LOOPBACK_MODE) && in lpfc_issue_reg_vfi()
491 mboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_reg_vfi()
504 dmabuf->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &dmabuf->phys); in lpfc_issue_reg_vfi()
509 memcpy(dmabuf->virt, &phba->fc_fabparam, in lpfc_issue_reg_vfi()
522 rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT); in lpfc_issue_reg_vfi()
531 mempool_free(mboxq, phba->mbox_mem_pool); in lpfc_issue_reg_vfi()
534 lpfc_mbuf_free(phba, dmabuf->virt, dmabuf->phys); in lpfc_issue_reg_vfi()
558 struct lpfc_hba *phba = vport->phba; in lpfc_issue_unreg_vfi() local
563 mboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_issue_unreg_vfi()
565 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_issue_unreg_vfi()
567 "HBA state x%x\n", phba->pport->port_state); in lpfc_issue_unreg_vfi()
575 rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT); in lpfc_issue_unreg_vfi()
577 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_issue_unreg_vfi()
580 rc, phba->pport->port_state); in lpfc_issue_unreg_vfi()
581 mempool_free(mboxq, phba->mbox_mem_pool); in lpfc_issue_unreg_vfi()
614 struct lpfc_hba *phba = vport->phba; in lpfc_check_clean_addr_bit() local
638 (vport->fc_prevDID || phba->cfg_delay_discovery)) { in lpfc_check_clean_addr_bit()
673 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_fabric() local
682 phba->fc_edtov = be32_to_cpu(sp->cmn.e_d_tov); in lpfc_cmpl_els_flogi_fabric()
684 phba->fc_edtov = (phba->fc_edtov + 999999) / 1000000; in lpfc_cmpl_els_flogi_fabric()
686 phba->fc_edtovResol = sp->cmn.edtovResolution; in lpfc_cmpl_els_flogi_fabric()
687 phba->fc_ratov = (be32_to_cpu(sp->cmn.w2.r_a_tov) + 999) / 1000; in lpfc_cmpl_els_flogi_fabric()
689 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_cmpl_els_flogi_fabric()
713 if (phba->cfg_enable_SmartSAN || in lpfc_cmpl_els_flogi_fabric()
714 (phba->cfg_fdmi_on == LPFC_FDMI_SUPPORT)) { in lpfc_cmpl_els_flogi_fabric()
717 if (phba->cfg_enable_SmartSAN) in lpfc_cmpl_els_flogi_fabric()
731 memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); in lpfc_cmpl_els_flogi_fabric()
733 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) { in lpfc_cmpl_els_flogi_fabric()
740 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
741 phba->link_flag |= LS_NPIV_FAB_SUPPORTED; in lpfc_cmpl_els_flogi_fabric()
742 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
750 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
751 phba->link_flag &= ~LS_NPIV_FAB_SUPPORTED; in lpfc_cmpl_els_flogi_fabric()
752 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi_fabric()
760 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi_fabric()
761 (phba->sli4_hba.lnk_info.lnk_tp == LPFC_LNK_TYPE_FC)) { in lpfc_cmpl_els_flogi_fabric()
764 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi_fabric()
789 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_cmpl_els_flogi_fabric()
804 } else if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi_fabric()
811 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
815 if (phba->sli_rev < LPFC_SLI_REV4) { in lpfc_cmpl_els_flogi_fabric()
817 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED && in lpfc_cmpl_els_flogi_fabric()
819 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
827 lpfc_start_fdiscs(phba); in lpfc_cmpl_els_flogi_fabric()
828 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_flogi_fabric()
866 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_nport() local
876 phba->sli3_options &= ~LPFC_SLI3_NPIV_ENABLED; in lpfc_cmpl_els_flogi_nport()
879 if ((phba->sli_rev == LPFC_SLI_REV4) && phba->fc_topology_changed) { in lpfc_cmpl_els_flogi_nport()
880 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi_nport()
885 phba->fc_topology_changed = 0; in lpfc_cmpl_els_flogi_nport()
932 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_cmpl_els_flogi_nport()
936 lpfc_config_link(phba, mbox); in lpfc_cmpl_els_flogi_nport()
940 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_cmpl_els_flogi_nport()
942 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_flogi_nport()
985 lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_flogi() argument
1016 if ((phba->hba_flag & HBA_FIP_SUPPORT) && in lpfc_cmpl_els_flogi()
1017 (phba->fcf.fcf_flag & FCF_DISCOVERY)) { in lpfc_cmpl_els_flogi()
1018 if (phba->link_state < LPFC_LINK_UP) in lpfc_cmpl_els_flogi()
1020 if ((phba->fcoe_cvl_eventtag_attn == in lpfc_cmpl_els_flogi()
1021 phba->fcoe_cvl_eventtag) && in lpfc_cmpl_els_flogi()
1027 phba->fcoe_cvl_eventtag_attn = in lpfc_cmpl_els_flogi()
1028 phba->fcoe_cvl_eventtag; in lpfc_cmpl_els_flogi()
1029 lpfc_printf_log(phba, KERN_WARNING, LOG_FIP | LOG_ELS, in lpfc_cmpl_els_flogi()
1033 phba->fcf.current_rec.fcf_indx, in lpfc_cmpl_els_flogi()
1036 lpfc_sli4_set_fcf_flogi_fail(phba, in lpfc_cmpl_els_flogi()
1037 phba->fcf.current_rec.fcf_indx); in lpfc_cmpl_els_flogi()
1038 fcf_index = lpfc_sli4_fcf_rr_next_index_get(phba); in lpfc_cmpl_els_flogi()
1053 irsp->ulpTimeout, phba->hba_flag, in lpfc_cmpl_els_flogi()
1054 phba->fcf.fcf_flag); in lpfc_cmpl_els_flogi()
1057 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) in lpfc_cmpl_els_flogi()
1081 if (phba->alpa_map[0] == 0) in lpfc_cmpl_els_flogi()
1083 if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_flogi()
1086 phba->fc_topology_changed)) { in lpfc_cmpl_els_flogi()
1088 if (phba->fc_topology_changed) { in lpfc_cmpl_els_flogi()
1089 lpfc_unregister_fcf_prep(phba); in lpfc_cmpl_els_flogi()
1093 phba->fc_topology_changed = 0; in lpfc_cmpl_els_flogi()
1142 else if (!(phba->hba_flag & HBA_FCOE_MODE)) in lpfc_cmpl_els_flogi()
1151 phba->fcf.current_rec.fcf_indx, in lpfc_cmpl_els_flogi()
1152 phba->fcf.current_rec.switch_name[0], in lpfc_cmpl_els_flogi()
1153 phba->fcf.current_rec.switch_name[1], in lpfc_cmpl_els_flogi()
1154 phba->fcf.current_rec.switch_name[2], in lpfc_cmpl_els_flogi()
1155 phba->fcf.current_rec.switch_name[3], in lpfc_cmpl_els_flogi()
1156 phba->fcf.current_rec.switch_name[4], in lpfc_cmpl_els_flogi()
1157 phba->fcf.current_rec.switch_name[5], in lpfc_cmpl_els_flogi()
1158 phba->fcf.current_rec.switch_name[6], in lpfc_cmpl_els_flogi()
1159 phba->fcf.current_rec.switch_name[7], in lpfc_cmpl_els_flogi()
1160 phba->fcf.current_rec.fabric_name[0], in lpfc_cmpl_els_flogi()
1161 phba->fcf.current_rec.fabric_name[1], in lpfc_cmpl_els_flogi()
1162 phba->fcf.current_rec.fabric_name[2], in lpfc_cmpl_els_flogi()
1163 phba->fcf.current_rec.fabric_name[3], in lpfc_cmpl_els_flogi()
1164 phba->fcf.current_rec.fabric_name[4], in lpfc_cmpl_els_flogi()
1165 phba->fcf.current_rec.fabric_name[5], in lpfc_cmpl_els_flogi()
1166 phba->fcf.current_rec.fabric_name[6], in lpfc_cmpl_els_flogi()
1167 phba->fcf.current_rec.fabric_name[7]); in lpfc_cmpl_els_flogi()
1170 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1171 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1172 phba->hba_flag &= ~(FCF_RR_INPROG | HBA_DEVLOSS_TMO); in lpfc_cmpl_els_flogi()
1173 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1174 phba->fcf.fcf_redisc_attempted = 0; /* reset */ in lpfc_cmpl_els_flogi()
1179 if (phba->hba_flag & HBA_FIP_SUPPORT) in lpfc_cmpl_els_flogi()
1184 phba->fcf.current_rec.fcf_indx); in lpfc_cmpl_els_flogi()
1185 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1186 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1187 phba->hba_flag &= ~(FCF_RR_INPROG | HBA_DEVLOSS_TMO); in lpfc_cmpl_els_flogi()
1188 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1189 phba->fcf.fcf_redisc_attempted = 0; /* reset */ in lpfc_cmpl_els_flogi()
1204 spin_lock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1205 phba->fcf.fcf_flag &= ~FCF_DISCOVERY; in lpfc_cmpl_els_flogi()
1206 spin_unlock_irq(&phba->hbalock); in lpfc_cmpl_els_flogi()
1221 (phba->link_state != LPFC_CLEAR_LA)) { in lpfc_cmpl_els_flogi()
1223 lpfc_issue_clear_la(phba, vport); in lpfc_cmpl_els_flogi()
1226 phba->hba_flag &= ~HBA_FLOGI_OUTSTANDING; in lpfc_cmpl_els_flogi()
1227 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_flogi()
1240 lpfc_cmpl_els_link_down(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_link_down() argument
1251 lpfc_printf_log(phba, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_link_down()
1259 atomic_dec(&phba->fabric_iocb_count); in lpfc_cmpl_els_link_down()
1261 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_link_down()
1289 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_flogi() local
1326 if (phba->cfg_vmid_priority_tagging) { in lpfc_issue_els_flogi()
1330 memcpy(vport->lpfc_vmid_host_uuid, phba->wwpn, in lpfc_issue_els_flogi()
1331 sizeof(phba->wwpn)); in lpfc_issue_els_flogi()
1332 memcpy(&vport->lpfc_vmid_host_uuid[8], phba->wwnn, in lpfc_issue_els_flogi()
1333 sizeof(phba->wwnn)); in lpfc_issue_els_flogi()
1337 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_issue_els_flogi()
1338 if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) == in lpfc_issue_els_flogi()
1344 elsiocb->iocb.ulpContext = phba->fcf.fcfi; in lpfc_issue_els_flogi()
1353 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) { in lpfc_issue_els_flogi()
1362 if (phba->fc_topology != LPFC_TOPOLOGY_LOOP) { in lpfc_issue_els_flogi()
1367 tmo = phba->fc_ratov; in lpfc_issue_els_flogi()
1368 phba->fc_ratov = LPFC_DISC_FLOGI_TMO; in lpfc_issue_els_flogi()
1370 phba->fc_ratov = tmo; in lpfc_issue_els_flogi()
1372 phba->fc_stat.elsXmitFLOGI++; in lpfc_issue_els_flogi()
1377 phba->sli3_options, 0, 0); in lpfc_issue_els_flogi()
1381 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_flogi()
1385 rc = lpfc_issue_fabric_iocb(phba, elsiocb); in lpfc_issue_els_flogi()
1387 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_flogi()
1392 phba->hba_flag |= (HBA_FLOGI_ISSUED | HBA_FLOGI_OUTSTANDING); in lpfc_issue_els_flogi()
1395 if (phba->defer_flogi_acc_flag) { in lpfc_issue_els_flogi()
1401 defer_flogi_acc.iocb.ulpContext = phba->defer_flogi_acc_rx_id; in lpfc_issue_els_flogi()
1403 phba->defer_flogi_acc_ox_id; in lpfc_issue_els_flogi()
1408 phba->defer_flogi_acc_rx_id, in lpfc_issue_els_flogi()
1409 phba->defer_flogi_acc_ox_id, phba->hba_flag); in lpfc_issue_els_flogi()
1415 phba->defer_flogi_acc_flag = false; in lpfc_issue_els_flogi()
1438 lpfc_els_abort_flogi(struct lpfc_hba *phba) in lpfc_els_abort_flogi() argument
1446 lpfc_printf_log(phba, KERN_INFO, LOG_DISCOVERY, in lpfc_els_abort_flogi()
1450 pring = lpfc_phba_elsring(phba); in lpfc_els_abort_flogi()
1458 spin_lock_irq(&phba->hbalock); in lpfc_els_abort_flogi()
1464 if ((phba->pport->fc_flag & FC_PT2PT) && in lpfc_els_abort_flogi()
1465 !(phba->pport->fc_flag & FC_PT2PT_PLOGI)) in lpfc_els_abort_flogi()
1468 lpfc_sli_issue_abort_iotag(phba, pring, iocb, in lpfc_els_abort_flogi()
1474 lpfc_issue_hb_tmo(phba); in lpfc_els_abort_flogi()
1476 spin_unlock_irq(&phba->hbalock); in lpfc_els_abort_flogi()
1638 lpfc_plogi_confirm_nport(struct lpfc_hba *phba, uint32_t *prsp, in lpfc_plogi_confirm_nport() argument
1676 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_plogi_confirm_nport()
1677 active_rrqs_xri_bitmap = mempool_alloc(phba->active_rrq_pool, in lpfc_plogi_confirm_nport()
1681 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1694 if (phba->sli_rev == LPFC_SLI_REV4 && active_rrqs_xri_bitmap) in lpfc_plogi_confirm_nport()
1696 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1711 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_plogi_confirm_nport()
1714 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1793 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1797 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1813 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1817 phba->cfg_rrq_xri_bitmap_sz); in lpfc_plogi_confirm_nport()
1836 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_plogi_confirm_nport()
1839 phba->active_rrq_pool); in lpfc_plogi_confirm_nport()
1894 lpfc_cmpl_els_rrq(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_rrq() argument
1926 (phba)->pport->cfg_log_verbose & LOG_ELS) in lpfc_cmpl_els_rrq()
1934 lpfc_clr_rrq_active(phba, rrq->xritag, rrq); in lpfc_cmpl_els_rrq()
1935 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_rrq()
1960 lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_plogi() argument
2017 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_plogi()
2030 (phba)->pport->cfg_log_verbose & LOG_ELS) in lpfc_cmpl_els_plogi()
2068 ndlp = lpfc_plogi_confirm_nport(phba, prsp->virt, ndlp); in lpfc_cmpl_els_plogi()
2074 if ((phba->cfg_vmid_app_header && sp->cmn.app_hdr_support) || in lpfc_cmpl_els_plogi()
2075 (phba->cfg_vmid_priority_tagging && in lpfc_cmpl_els_plogi()
2077 lpfc_printf_log(phba, KERN_DEBUG, LOG_ELS, in lpfc_cmpl_els_plogi()
2113 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_plogi()
2141 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_plogi() local
2211 else if (phba->cfg_vmid_app_header && in lpfc_issue_els_plogi()
2212 bf_get(lpfc_ftr_ashdr, &phba->sli4_hba.sli4_flags)) in lpfc_issue_els_plogi()
2222 if (phba->sli.sli_flag & LPFC_SLI_SUPPRESS_RSP) { in lpfc_issue_els_plogi()
2228 phba->fc_stat.elsXmitPLOGI++; in lpfc_issue_els_plogi()
2236 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_plogi()
2240 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_plogi()
2242 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_plogi()
2264 lpfc_cmpl_els_prli(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_prli() argument
2304 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_prli()
2357 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_prli()
2387 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_prli() local
2401 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_issue_els_prli()
2435 if (phba->sli_rev == LPFC_SLI_REV3 && in lpfc_issue_els_prli()
2468 if (phba->vpd.rev.feaLevelHigh >= 0x02) { in lpfc_issue_els_prli()
2495 if (phba->nsler) { in lpfc_issue_els_prli()
2501 if ((phba->cfg_nvme_enable_fb) && in lpfc_issue_els_prli()
2502 !phba->nvmet_support) in lpfc_issue_els_prli()
2505 if (phba->nvmet_support) { in lpfc_issue_els_prli()
2521 phba->fc_stat.elsXmitPRLI++; in lpfc_issue_els_prli()
2539 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_prli()
2543 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_prli()
2545 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_prli()
2554 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_issue_els_prli()
2607 struct lpfc_hba *phba = vport->phba; in lpfc_adisc_done() local
2613 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_adisc_done()
2615 (phba->sli_rev < LPFC_SLI_REV4)) { in lpfc_adisc_done()
2621 if (!lpfc_is_link_up(phba)) in lpfc_adisc_done()
2632 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2633 lpfc_issue_reg_vpi(phba, vport); in lpfc_adisc_done()
2642 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2709 lpfc_cmpl_els_adisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_adisc() argument
2751 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_adisc()
2790 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_adisc()
2819 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_adisc() local
2839 ap->hardAL_PA = phba->fc_pref_ALPA; in lpfc_issue_els_adisc()
2844 phba->fc_stat.elsXmitADISC++; in lpfc_issue_els_adisc()
2851 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_adisc()
2858 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_adisc()
2860 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_adisc()
2886 lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_logo() argument
2952 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_els_logo()
2958 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_logo()
2967 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_logo()
3039 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_logo() local
3067 phba->fc_stat.elsXmitLOGO++; in lpfc_issue_els_logo()
3075 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_logo()
3082 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_logo()
3084 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_logo()
3118 lpfc_cmpl_els_cmd(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_cmd() argument
3143 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_cmd()
3165 struct lpfc_hba *phba = vport->phba; in lpfc_reg_fab_ctrl_node() local
3184 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_reg_fab_ctrl_node()
3193 rc = lpfc_reg_rpi(phba, vport->vpi, fc_ndlp->nlp_DID, in lpfc_reg_fab_ctrl_node()
3209 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_reg_fab_ctrl_node()
3223 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_reg_fab_ctrl_node()
3227 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_reg_fab_ctrl_node()
3248 lpfc_cmpl_els_disc_cmd(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_disc_cmd() argument
3302 phba->fc_stat.elsRetryExceeded++; in lpfc_cmpl_els_disc_cmd()
3306 lpfc_cmpl_els_edc(phba, cmdiocb, rspiocb); in lpfc_cmpl_els_disc_cmd()
3339 phba->cgn_reg_signal, in lpfc_cmpl_els_disc_cmd()
3340 phba->cgn_reg_fpin); in lpfc_cmpl_els_disc_cmd()
3346 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_disc_cmd()
3375 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_scr() local
3396 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_issue_els_scr()
3399 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_scr()
3419 phba->fc_stat.elsXmitSCR++; in lpfc_issue_els_scr()
3423 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_scr()
3431 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_scr()
3433 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_scr()
3464 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rscn() local
3475 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP && in lpfc_issue_els_rscn()
3516 phba->fc_stat.elsXmitRSCN++; in lpfc_issue_els_rscn()
3520 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_rscn()
3528 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_rscn()
3530 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_rscn()
3568 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_farpr() local
3620 phba->fc_stat.elsXmitFARPR++; in lpfc_issue_els_farpr()
3624 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_farpr()
3628 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_farpr()
3634 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_farpr()
3664 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rdf() local
3708 ndlp->nlp_DID, phba->cgn_reg_signal, in lpfc_issue_els_rdf()
3709 phba->cgn_reg_fpin); in lpfc_issue_els_rdf()
3711 phba->cgn_fpin_frequency = LPFC_FPIN_INIT_FREQ; in lpfc_issue_els_rdf()
3715 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_rdf()
3723 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_rdf()
3725 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_rdf()
3780 lpfc_least_capable_settings(struct lpfc_hba *phba, in lpfc_least_capable_settings() argument
3814 drv_sig_cap = phba->cgn_reg_signal; in lpfc_least_capable_settings()
3817 if (rsp_sig_freq_cyc > phba->cgn_sig_freq) in lpfc_least_capable_settings()
3818 phba->cgn_sig_freq = rsp_sig_freq_cyc; in lpfc_least_capable_settings()
3824 phba->cgn_reg_fpin = LPFC_CGN_FPIN_WARN | LPFC_CGN_FPIN_ALARM; in lpfc_least_capable_settings()
3825 phba->cgn_reg_signal = EDC_CG_SIG_NOTSUPPORTED; in lpfc_least_capable_settings()
3829 phba->cgn_reg_signal = EDC_CG_SIG_WARN_ONLY; in lpfc_least_capable_settings()
3830 phba->cgn_reg_fpin &= ~LPFC_CGN_FPIN_WARN; in lpfc_least_capable_settings()
3834 phba->cgn_reg_signal = EDC_CG_SIG_WARN_ALARM; in lpfc_least_capable_settings()
3835 phba->cgn_reg_fpin = LPFC_CGN_FPIN_NONE; in lpfc_least_capable_settings()
3838 phba->cgn_reg_signal = EDC_CG_SIG_WARN_ONLY; in lpfc_least_capable_settings()
3839 phba->cgn_reg_fpin &= ~LPFC_CGN_FPIN_WARN; in lpfc_least_capable_settings()
3843 if (!phba->cgn_i) in lpfc_least_capable_settings()
3847 cp = (struct lpfc_cgn_info *)phba->cgn_i->virt; in lpfc_least_capable_settings()
3852 sig_freq = phba->cgn_sig_freq; in lpfc_least_capable_settings()
3854 if (phba->cgn_reg_signal == EDC_CG_SIG_WARN_ONLY) in lpfc_least_capable_settings()
3856 if (phba->cgn_reg_signal == EDC_CG_SIG_WARN_ALARM) { in lpfc_least_capable_settings()
3865 phba->cgn_reg_signal = EDC_CG_SIG_NOTSUPPORTED; in lpfc_least_capable_settings()
3866 phba->cgn_sig_freq = 0; in lpfc_least_capable_settings()
3867 phba->cgn_reg_fpin = LPFC_CGN_FPIN_ALARM | LPFC_CGN_FPIN_WARN; in lpfc_least_capable_settings()
3887 lpfc_cmpl_els_edc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_edc() argument
3905 lpfc_debugfs_disc_trc(phba->pport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_edc()
3911 lpfc_printf_log(phba, KERN_INFO, LOG_ELS | LOG_CGN_MGMT, in lpfc_cmpl_els_edc()
3937 lpfc_printf_log(phba, KERN_INFO, LOG_ELS | LOG_CGN_MGMT, in lpfc_cmpl_els_edc()
3961 lpfc_printf_log(phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_cmpl_els_edc()
3975 phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_cmpl_els_edc()
3985 phba, KERN_INFO, LOG_ELS | LOG_CGN_MGMT, in lpfc_cmpl_els_edc()
4001 phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_cmpl_els_edc()
4012 phba, KERN_INFO, LOG_ELS | LOG_CGN_MGMT, in lpfc_cmpl_els_edc()
4027 lpfc_least_capable_settings(phba, pcgd); in lpfc_cmpl_els_edc()
4032 lpfc_printf_log(phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_cmpl_els_edc()
4045 phba->cgn_reg_fpin = LPFC_CGN_FPIN_ALARM | LPFC_CGN_FPIN_WARN; in lpfc_cmpl_els_edc()
4046 phba->cgn_reg_signal = EDC_CG_SIG_NOTSUPPORTED; in lpfc_cmpl_els_edc()
4047 phba->cgn_sig_freq = 0; in lpfc_cmpl_els_edc()
4048 lpfc_printf_log(phba, KERN_WARNING, LOG_ELS | LOG_CGN_MGMT, in lpfc_cmpl_els_edc()
4053 lpfc_config_cgn_signal(phba); in lpfc_cmpl_els_edc()
4056 lpfc_els_chk_latt(phba->pport); in lpfc_cmpl_els_edc()
4057 lpfc_debugfs_disc_trc(phba->pport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_edc()
4060 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_edc()
4065 lpfc_format_edc_cgn_desc(struct lpfc_hba *phba, struct fc_diag_cg_sig_desc *cgd) in lpfc_format_edc_cgn_desc() argument
4081 if (phba->cmf_active_mode == LPFC_CFG_OFF) { in lpfc_format_edc_cgn_desc()
4086 phba->cgn_sig_freq = 0; in lpfc_format_edc_cgn_desc()
4089 switch (phba->cgn_reg_signal) { in lpfc_format_edc_cgn_desc()
4135 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_edc() local
4153 if (!phba->cgn_init_reg_signal) in lpfc_issue_els_edc()
4173 lpfc_format_edc_cgn_desc(phba, cgn_desc); in lpfc_issue_els_edc()
4175 phba->cgn_sig_freq = lpfc_fabric_cgn_frequency; in lpfc_issue_els_edc()
4180 ndlp->nlp_DID, phba->cgn_reg_signal, in lpfc_issue_els_edc()
4181 phba->cgn_reg_fpin); in lpfc_issue_els_edc()
4186 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_edc()
4193 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_edc()
4199 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_edc()
4205 phba->cgn_reg_fpin = LPFC_CGN_FPIN_WARN | LPFC_CGN_FPIN_ALARM; in lpfc_issue_els_edc()
4206 phba->cgn_reg_signal = EDC_CG_SIG_NOTSUPPORTED; in lpfc_issue_els_edc()
4285 struct lpfc_hba *phba = vport->phba; in lpfc_els_retry_delay() local
4289 spin_lock_irqsave(&phba->hbalock, flags); in lpfc_els_retry_delay()
4291 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_els_retry_delay()
4301 list_add_tail(&evtp->evt_listp, &phba->work_list); in lpfc_els_retry_delay()
4302 lpfc_worker_wake_up(phba); in lpfc_els_retry_delay()
4304 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_els_retry_delay()
4395 struct lpfc_hba *phba = vport->phba; in lpfc_link_reset() local
4402 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_link_reset()
4404 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_link_reset()
4410 if (phba->sli_rev <= LPFC_SLI_REV3) { in lpfc_link_reset()
4411 spin_lock_irq(&phba->hbalock); in lpfc_link_reset()
4412 phba->sli.sli_flag |= LPFC_PROCESS_LA; in lpfc_link_reset()
4413 control = readl(phba->HCregaddr); in lpfc_link_reset()
4415 writel(control, phba->HCregaddr); in lpfc_link_reset()
4416 readl(phba->HCregaddr); /* flush */ in lpfc_link_reset()
4417 spin_unlock_irq(&phba->hbalock); in lpfc_link_reset()
4420 lpfc_init_link(phba, mbox, phba->cfg_topology, in lpfc_link_reset()
4421 phba->cfg_link_speed); in lpfc_link_reset()
4424 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_link_reset()
4426 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_link_reset()
4429 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_link_reset()
4458 lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_els_retry() argument
4501 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_els_retry()
4506 lpfc_set_rrq_active(phba, ndlp, in lpfc_els_retry()
4515 phba->pcidev->device) { in lpfc_els_retry()
4516 phba->fc_topology = LPFC_TOPOLOGY_LOOP; in lpfc_els_retry()
4517 phba->pport->fc_myDID = 0; in lpfc_els_retry()
4518 phba->alpa_map[0] = 0; in lpfc_els_retry()
4519 phba->alpa_map[1] = 0; in lpfc_els_retry()
4639 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_retry()
4691 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_retry()
4754 (phba->fc_topology != LPFC_TOPOLOGY_LOOP) && in lpfc_els_retry()
4759 if (phba->link_flag != LS_LOOPBACK_MODE) in lpfc_els_retry()
4777 phba->fc_stat.elsRetryExceeded++; in lpfc_els_retry()
4788 if (phba->fcf.fcf_flag & FCF_DISCOVERY) { in lpfc_els_retry()
4816 phba->fc_stat.elsXmitRetry++; in lpfc_els_retry()
4818 phba->fc_stat.elsDelayRetry++; in lpfc_els_retry()
4906 lpfc_els_free_data(struct lpfc_hba *phba, struct lpfc_dmabuf *buf_ptr1) in lpfc_els_free_data() argument
4915 lpfc_mbuf_free(phba, buf_ptr->virt, buf_ptr->phys); in lpfc_els_free_data()
4918 lpfc_mbuf_free(phba, buf_ptr1->virt, buf_ptr1->phys); in lpfc_els_free_data()
4936 lpfc_els_free_bpl(struct lpfc_hba *phba, struct lpfc_dmabuf *buf_ptr) in lpfc_els_free_bpl() argument
4938 lpfc_mbuf_free(phba, buf_ptr->virt, buf_ptr->phys); in lpfc_els_free_bpl()
4971 lpfc_els_free_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *elsiocb) in lpfc_els_free_iocb() argument
4990 spin_lock_irq(&phba->hbalock); in lpfc_els_free_iocb()
4997 &phba->elsbuf); in lpfc_els_free_iocb()
4998 phba->elsbuf_cnt++; in lpfc_els_free_iocb()
5001 list_add_tail(&buf_ptr->list, &phba->elsbuf); in lpfc_els_free_iocb()
5002 phba->elsbuf_cnt++; in lpfc_els_free_iocb()
5003 spin_unlock_irq(&phba->hbalock); in lpfc_els_free_iocb()
5007 lpfc_els_free_data(phba, buf_ptr1); in lpfc_els_free_iocb()
5014 lpfc_els_free_bpl(phba, buf_ptr); in lpfc_els_free_iocb()
5017 lpfc_sli_release_iocbq(phba, elsiocb); in lpfc_els_free_iocb()
5039 lpfc_cmpl_els_logo_acc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_logo_acc() argument
5084 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_els_logo_acc()
5100 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_logo_acc()
5118 lpfc_mbx_cmpl_dflt_rpi(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_mbx_cmpl_dflt_rpi() argument
5150 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_mbx_cmpl_dflt_rpi()
5152 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_mbx_cmpl_dflt_rpi()
5170 lpfc_cmpl_els_rsp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_rsp() argument
5183 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_rsp()
5195 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_cmpl_els_rsp()
5198 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
5232 lpfc_mbuf_free(phba, mp->virt, in lpfc_cmpl_els_rsp()
5236 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
5261 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_cmpl_els_rsp()
5280 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_cmpl_els_rsp()
5283 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_cmpl_els_rsp()
5297 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_cmpl_els_rsp()
5300 lpfc_sli4_free_rpi(phba, ndlp->nlp_rpi); in lpfc_cmpl_els_rsp()
5309 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_rsp()
5344 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_acc() local
5402 memcpy(sp, &phba->fc_fabparam, in lpfc_els_rsp_acc()
5431 if (phba->sli.sli_flag & LPFC_SLI_SUPPRESS_RSP) { in lpfc_els_rsp_acc()
5502 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_acc()
5505 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_acc()
5509 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_acc()
5511 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_acc()
5555 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_reject() local
5593 phba->fc_stat.elsXmitLSRJT++; in lpfc_els_rsp_reject()
5597 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_reject()
5605 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_els_rsp_reject()
5612 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_reject()
5614 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_reject()
5640 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_edc_rsp() local
5668 lpfc_format_edc_cgn_desc(phba, &edc_rsp->cgn_desc); in lpfc_issue_els_edc_rsp()
5676 phba->fc_stat.elsXmitACC++; in lpfc_issue_els_edc_rsp()
5679 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_edc_rsp()
5683 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_edc_rsp()
5685 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_edc_rsp()
5725 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_adisc_acc() local
5757 ap->hardAL_PA = phba->fc_pref_ALPA; in lpfc_els_rsp_adisc_acc()
5766 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_adisc_acc()
5770 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_adisc_acc()
5774 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_adisc_acc()
5776 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_adisc_acc()
5815 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_prli_acc() local
5876 vpd = &phba->vpd; in lpfc_els_rsp_prli_acc()
5903 if (phba->nvmet_support) { in lpfc_els_rsp_prli_acc()
5906 if (phba->cfg_nvme_enable_fb) { in lpfc_els_rsp_prli_acc()
5914 phba->cfg_nvmet_fb_size); in lpfc_els_rsp_prli_acc()
5940 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_prli_acc()
5944 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_prli_acc()
5948 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_prli_acc()
5950 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_prli_acc()
5982 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rnid_acc() local
6041 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rnid_acc()
6045 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rnid_acc()
6049 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_rnid_acc()
6051 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rnid_acc()
6071 struct lpfc_hba *phba = vport->phba; in lpfc_els_clear_rrq() local
6102 lpfc_clr_rrq_active(phba, xri, prrq); in lpfc_els_clear_rrq()
6121 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_echo_acc() local
6155 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_echo_acc()
6159 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_echo_acc()
6163 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_echo_acc()
6165 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_echo_acc()
6423 if (vport->phba->fc_topology != LPFC_TOPOLOGY_LOOP) { in lpfc_rdp_res_bbc_desc()
6424 bbCredit = vport->phba->fc_fabparam.cmn.bbCreditLsb | in lpfc_rdp_res_bbc_desc()
6425 (vport->phba->fc_fabparam.cmn.bbCreditMsb << 8); in lpfc_rdp_res_bbc_desc()
6438 lpfc_rdp_res_oed_temp_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_temp_desc() argument
6450 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
6452 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
6454 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
6456 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_TEMPERATURE) in lpfc_rdp_res_oed_temp_desc()
6466 lpfc_rdp_res_oed_voltage_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_voltage_desc() argument
6479 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
6481 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
6483 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
6485 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_VOLTAGE) in lpfc_rdp_res_oed_voltage_desc()
6495 lpfc_rdp_res_oed_txbias_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_txbias_desc() argument
6508 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
6510 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
6512 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
6514 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_TXBIAS) in lpfc_rdp_res_oed_txbias_desc()
6524 lpfc_rdp_res_oed_txpower_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_txpower_desc() argument
6537 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
6539 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
6541 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
6543 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_TXPOWER) in lpfc_rdp_res_oed_txpower_desc()
6554 lpfc_rdp_res_oed_rxpower_desc(struct lpfc_hba *phba, in lpfc_rdp_res_oed_rxpower_desc() argument
6567 if (phba->sfp_alarm & LPFC_TRANSGRESSION_HIGH_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
6569 if (phba->sfp_alarm & LPFC_TRANSGRESSION_LOW_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
6571 if (phba->sfp_warning & LPFC_TRANSGRESSION_HIGH_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
6573 if (phba->sfp_warning & LPFC_TRANSGRESSION_LOW_RXPOWER) in lpfc_rdp_res_oed_rxpower_desc()
6614 lpfc_rdp_res_speed(struct fc_rdp_port_speed_desc *desc, struct lpfc_hba *phba) in lpfc_rdp_res_speed() argument
6621 switch (phba->fc_linkspeed) { in lpfc_rdp_res_speed()
6659 if (phba->lmt & LMT_256Gb) in lpfc_rdp_res_speed()
6661 if (phba->lmt & LMT_128Gb) in lpfc_rdp_res_speed()
6663 if (phba->lmt & LMT_64Gb) in lpfc_rdp_res_speed()
6665 if (phba->lmt & LMT_32Gb) in lpfc_rdp_res_speed()
6667 if (phba->lmt & LMT_16Gb) in lpfc_rdp_res_speed()
6669 if (phba->lmt & LMT_10Gb) in lpfc_rdp_res_speed()
6671 if (phba->lmt & LMT_8Gb) in lpfc_rdp_res_speed()
6673 if (phba->lmt & LMT_4Gb) in lpfc_rdp_res_speed()
6675 if (phba->lmt & LMT_2Gb) in lpfc_rdp_res_speed()
6677 if (phba->lmt & LMT_1Gb) in lpfc_rdp_res_speed()
6682 if (phba->cfg_link_speed != LPFC_USER_LINK_SPEED_AUTO) in lpfc_rdp_res_speed()
6732 lpfc_els_rdp_cmpl(struct lpfc_hba *phba, struct lpfc_rdp_context *rdp_context, in lpfc_els_rdp_cmpl() argument
6777 phba->sfp_alarm |= *flag_ptr; in lpfc_els_rdp_cmpl()
6779 phba->sfp_warning |= *flag_ptr; in lpfc_els_rdp_cmpl()
6789 phba); in lpfc_els_rdp_cmpl()
6800 len += lpfc_rdp_res_oed_temp_desc(phba, in lpfc_els_rdp_cmpl()
6803 len += lpfc_rdp_res_oed_voltage_desc(phba, in lpfc_els_rdp_cmpl()
6806 len += lpfc_rdp_res_oed_txbias_desc(phba, in lpfc_els_rdp_cmpl()
6809 len += lpfc_rdp_res_oed_txpower_desc(phba, in lpfc_els_rdp_cmpl()
6812 len += lpfc_rdp_res_oed_rxpower_desc(phba, in lpfc_els_rdp_cmpl()
6828 phba->fc_stat.elsXmitACC++; in lpfc_els_rdp_cmpl()
6831 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rdp_cmpl()
6835 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rdp_cmpl()
6837 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rdp_cmpl()
6859 phba->fc_stat.elsXmitLSRJT++; in lpfc_els_rdp_cmpl()
6863 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rdp_cmpl()
6867 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rdp_cmpl()
6869 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rdp_cmpl()
6882 lpfc_get_rdp_info(struct lpfc_hba *phba, struct lpfc_rdp_context *rdp_context) in lpfc_get_rdp_info() argument
6887 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_get_rdp_info()
6889 lpfc_printf_log(phba, KERN_WARNING, LOG_MBOX | LOG_ELS, in lpfc_get_rdp_info()
6894 if (lpfc_sli4_dump_page_a0(phba, mbox)) in lpfc_get_rdp_info()
6899 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_get_rdp_info()
6907 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_get_rdp_info()
6932 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rdp() local
6940 if (phba->sli_rev < LPFC_SLI_REV4 || in lpfc_els_rcv_rdp()
6941 bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) < in lpfc_els_rcv_rdp()
6948 if (phba->sli_rev < LPFC_SLI_REV4 || (phba->hba_flag & HBA_FCOE_MODE)) { in lpfc_els_rcv_rdp()
6989 if (lpfc_get_rdp_info(phba, rdp_context)) { in lpfc_els_rcv_rdp()
7013 lpfc_els_lcb_rsp(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_els_lcb_rsp() argument
7038 lpfc_printf_log(phba, KERN_INFO, LOG_MBOX, in lpfc_els_lcb_rsp()
7047 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_lcb_rsp()
7051 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_lcb_rsp()
7053 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_lcb_rsp()
7079 phba->fc_stat.elsXmitACC++; in lpfc_els_lcb_rsp()
7083 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_lcb_rsp()
7087 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_lcb_rsp()
7089 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_lcb_rsp()
7098 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_lcb_rsp()
7118 phba->fc_stat.elsXmitLSRJT++; in lpfc_els_lcb_rsp()
7121 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_lcb_rsp()
7125 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_lcb_rsp()
7127 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_lcb_rsp()
7139 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_set_beacon() local
7145 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_sli4_set_beacon()
7152 lpfc_sli4_config(phba, mbox, LPFC_MBOX_SUBSYSTEM_COMMON, in lpfc_sli4_set_beacon()
7156 mbox->vport = phba->pport; in lpfc_sli4_set_beacon()
7159 phba->sli4_hba.physical_port); in lpfc_sli4_set_beacon()
7170 if (phba->sli4_hba.pc_sli4_params.bv1s) { in lpfc_sli4_set_beacon()
7182 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_sli4_set_beacon()
7196 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT); in lpfc_sli4_set_beacon()
7198 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_sli4_set_beacon()
7224 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_lcb() local
7252 if (phba->sli_rev < LPFC_SLI_REV4 || in lpfc_els_rcv_lcb()
7253 phba->hba_flag & HBA_FCOE_MODE || in lpfc_els_rcv_lcb()
7254 (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) < in lpfc_els_rcv_lcb()
7312 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_rscn() local
7326 lpfc_in_buf_free(phba, vport->fc_rscn_id_list[i]); in lpfc_els_flush_rscn()
7438 if (vport->phba->nvmet_support) in lpfc_rscn_recovery_check()
7530 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rscn() local
7588 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_rcv_rscn()
7597 if (lpfc_find_vport_by_did(phba, nportid)) in lpfc_els_rcv_rscn()
7645 tmo = ((phba->fc_ratov * 3) + 3); in lpfc_els_rcv_rscn()
7738 struct lpfc_hba *phba = vport->phba; in lpfc_els_handle_rscn() local
7767 if (phba->cfg_ns_query == LPFC_NS_QUERY_GID_FT) { in lpfc_els_handle_rscn()
7770 } else if (phba->cfg_ns_query == LPFC_NS_QUERY_GID_PT) { in lpfc_els_handle_rscn()
7832 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_flogi() local
7850 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_els_rcv_flogi()
7874 if (phba->sli_rev < LPFC_SLI_REV4) { in lpfc_els_rcv_flogi()
7875 mbox = mempool_alloc(phba->mbox_mem_pool, in lpfc_els_rcv_flogi()
7879 lpfc_linkdown(phba); in lpfc_els_rcv_flogi()
7880 lpfc_init_link(phba, mbox, in lpfc_els_rcv_flogi()
7881 phba->cfg_topology, in lpfc_els_rcv_flogi()
7882 phba->cfg_link_speed); in lpfc_els_rcv_flogi()
7886 rc = lpfc_sli_issue_mbox(phba, mbox, in lpfc_els_rcv_flogi()
7888 lpfc_set_loopback_flag(phba); in lpfc_els_rcv_flogi()
7890 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_flogi()
7897 lpfc_els_abort_flogi(phba); in lpfc_els_rcv_flogi()
7944 memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm)); in lpfc_els_rcv_flogi()
7947 if (!(phba->hba_flag & HBA_FLOGI_ISSUED)) { in lpfc_els_rcv_flogi()
7948 phba->defer_flogi_acc_rx_id = cmdiocb->iocb.ulpContext; in lpfc_els_rcv_flogi()
7949 phba->defer_flogi_acc_ox_id = in lpfc_els_rcv_flogi()
7957 phba->defer_flogi_acc_rx_id, in lpfc_els_rcv_flogi()
7958 phba->defer_flogi_acc_ox_id, phba->hba_flag); in lpfc_els_rcv_flogi()
7960 phba->defer_flogi_acc_flag = true; in lpfc_els_rcv_flogi()
8098 if (vport->phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_rcv_rrq()
8122 lpfc_els_rsp_rls_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_els_rsp_rls_acc() argument
8144 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
8149 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_rsp_rls_acc()
8157 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
8176 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_els_rsp_rls_acc()
8185 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rls_acc()
8188 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rls_acc()
8192 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_rls_acc()
8194 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rls_acc()
8222 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rls() local
8231 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_ATOMIC); in lpfc_els_rcv_rls()
8233 lpfc_read_lnk_stat(phba, mbox); in lpfc_els_rcv_rls()
8242 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_els_rcv_rls()
8251 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_rcv_rls()
8289 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rtv() local
8303 elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize, in lpfc_els_rcv_rtv()
8321 rtv_rsp->ratov = cpu_to_be32(phba->fc_ratov * 1000); /* report msecs */ in lpfc_els_rcv_rtv()
8322 rtv_rsp->edtov = cpu_to_be32(phba->fc_edtov); in lpfc_els_rcv_rtv()
8323 bf_set(qtov_edtovres, rtv_rsp, phba->fc_edtovResol ? 1 : 0); in lpfc_els_rcv_rtv()
8337 phba->fc_stat.elsXmitACC++; in lpfc_els_rcv_rtv()
8340 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rcv_rtv()
8344 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rcv_rtv()
8346 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rcv_rtv()
8378 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rrq() local
8402 bf_set(rrq_oxid, els_rrq, phba->sli4_hba.xri_ids[rrq->xritag]); in lpfc_issue_els_rrq()
8418 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_rrq()
8424 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_rrq()
8442 lpfc_send_rrq(struct lpfc_hba *phba, struct lpfc_node_rrq *rrq) in lpfc_send_rrq() argument
8449 if (lpfc_test_rrq_active(phba, ndlp, rrq->xritag)) in lpfc_send_rrq()
8480 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rpl_acc() local
8520 phba->fc_stat.elsXmitACC++; in lpfc_els_rsp_rpl_acc()
8523 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rpl_acc()
8527 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_els_rsp_rpl_acc()
8529 lpfc_els_free_iocb(phba, elsiocb); in lpfc_els_rsp_rpl_acc()
8739 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_fan() local
8747 if ((vport == phba->pport) && in lpfc_els_rcv_fan()
8749 if ((memcmp(&phba->fc_fabparam.nodeName, &fp->FnodeName, in lpfc_els_rcv_fan()
8751 (memcmp(&phba->fc_fabparam.portName, &fp->FportName, in lpfc_els_rcv_fan()
8758 if (phba->sli_rev < LPFC_SLI_REV4) in lpfc_els_rcv_fan()
8784 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_edc() local
8805 phba->cgn_reg_signal = EDC_CG_SIG_NOTSUPPORTED; in lpfc_els_rcv_edc()
8806 phba->cgn_sig_freq = 0; in lpfc_els_rcv_edc()
8807 phba->cgn_reg_fpin = LPFC_CGN_FPIN_ALARM | LPFC_CGN_FPIN_WARN; in lpfc_els_rcv_edc()
8820 lpfc_printf_log(phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_els_rcv_edc()
8834 phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_els_rcv_edc()
8849 phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_els_rcv_edc()
8858 phba->cgn_reg_fpin = phba->cgn_init_reg_fpin; in lpfc_els_rcv_edc()
8859 phba->cgn_reg_signal = phba->cgn_init_reg_signal; in lpfc_els_rcv_edc()
8865 phba->cgn_sig_freq = lpfc_fabric_cgn_frequency; in lpfc_els_rcv_edc()
8868 phba, (struct fc_diag_cg_sig_desc *)tlv); in lpfc_els_rcv_edc()
8873 lpfc_printf_log(phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_els_rcv_edc()
8886 lpfc_config_cgn_signal(phba); in lpfc_els_rcv_edc()
8904 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout() local
8915 lpfc_worker_wake_up(phba); in lpfc_els_timeout()
8932 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout_handler() local
8943 timeout = (uint32_t)(phba->fc_ratov << 1); in lpfc_els_timeout_handler()
8945 pring = lpfc_phba_elsring(phba); in lpfc_els_timeout_handler()
8949 if (phba->pport->load_flag & FC_UNLOADING) in lpfc_els_timeout_handler()
8952 spin_lock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
8953 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_timeout_handler()
8995 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_timeout_handler()
8997 spin_unlock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
9005 spin_lock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
9007 lpfc_sli_issue_abort_iotag(phba, pring, piocb, NULL); in lpfc_els_timeout_handler()
9008 spin_unlock_irq(&phba->hbalock); in lpfc_els_timeout_handler()
9012 lpfc_issue_hb_tmo(phba); in lpfc_els_timeout_handler()
9015 if (!(phba->pport->load_flag & FC_UNLOADING)) in lpfc_els_timeout_handler()
9044 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_cmd() local
9058 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
9059 pring = lpfc_phba_elsring(phba); in lpfc_els_flush_cmd()
9063 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
9067 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
9095 if (phba->link_state == LPFC_LINK_DOWN) in lpfc_els_flush_cmd()
9102 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
9104 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
9108 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
9110 lpfc_sli_issue_abort_iotag(phba, pring, piocb, NULL); in lpfc_els_flush_cmd()
9111 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
9114 lpfc_issue_hb_tmo(phba); in lpfc_els_flush_cmd()
9121 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
9122 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
9150 if (vport == phba->pport) { in lpfc_els_flush_cmd()
9152 &phba->fabric_iocb_list, list) { in lpfc_els_flush_cmd()
9159 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_flush_cmd()
9161 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_els_flush_cmd()
9164 lpfc_sli_cancel_iocbs(phba, &abort_list, in lpfc_els_flush_cmd()
9188 lpfc_els_flush_all_cmd(struct lpfc_hba *phba) in lpfc_els_flush_all_cmd() argument
9192 spin_lock_irq(&phba->port_list_lock); in lpfc_els_flush_all_cmd()
9193 list_for_each_entry(vport, &phba->port_list, listentry) in lpfc_els_flush_all_cmd()
9195 spin_unlock_irq(&phba->port_list_lock); in lpfc_els_flush_all_cmd()
9210 lpfc_send_els_failure_event(struct lpfc_hba *phba, in lpfc_send_els_failure_event() argument
9371 lpfc_display_fpin_wwpn(struct lpfc_hba *phba, __be64 *wwnlist, u32 cnt) in lpfc_display_fpin_wwpn() argument
9399 lpfc_printf_log(phba, KERN_INFO, LOG_ELS, in lpfc_display_fpin_wwpn()
9409 lpfc_printf_log(phba, KERN_INFO, LOG_ELS, in lpfc_display_fpin_wwpn()
9431 lpfc_els_rcv_fpin_li(struct lpfc_hba *phba, struct fc_tlv_desc *tlv) in lpfc_els_rcv_fpin_li() argument
9441 lpfc_printf_log(phba, KERN_INFO, LOG_ELS, in lpfc_els_rcv_fpin_li()
9451 lpfc_display_fpin_wwpn(phba, (__be64 *)&li->pname_list, cnt); in lpfc_els_rcv_fpin_li()
9462 lpfc_els_rcv_fpin_del(struct lpfc_hba *phba, struct fc_tlv_desc *tlv) in lpfc_els_rcv_fpin_del() argument
9475 lpfc_printf_log(phba, KERN_INFO, LOG_ELS, in lpfc_els_rcv_fpin_del()
9500 lpfc_els_rcv_fpin_peer_cgn(struct lpfc_hba *phba, struct fc_tlv_desc *tlv) in lpfc_els_rcv_fpin_peer_cgn() argument
9510 lpfc_printf_log(phba, KERN_INFO, LOG_CGN_MGMT | LOG_ELS, in lpfc_els_rcv_fpin_peer_cgn()
9521 lpfc_display_fpin_wwpn(phba, (__be64 *)&pc->pname_list, cnt); in lpfc_els_rcv_fpin_peer_cgn()
9536 lpfc_els_rcv_fpin_cgn(struct lpfc_hba *phba, struct fc_tlv_desc *tlv) in lpfc_els_rcv_fpin_cgn() argument
9573 if (phba->cmf_active_mode != LPFC_CFG_OFF) { in lpfc_els_rcv_fpin_cgn()
9574 if (phba->cgn_reg_fpin & LPFC_CGN_FPIN_ALARM) { in lpfc_els_rcv_fpin_cgn()
9576 atomic_inc(&phba->cgn_fabric_alarm_cnt); in lpfc_els_rcv_fpin_cgn()
9578 atomic_inc(&phba->cgn_sync_alarm_cnt); in lpfc_els_rcv_fpin_cgn()
9585 if (phba->cmf_active_mode != LPFC_CFG_OFF) { in lpfc_els_rcv_fpin_cgn()
9586 if (phba->cgn_reg_fpin & LPFC_CGN_FPIN_WARN) { in lpfc_els_rcv_fpin_cgn()
9588 atomic_inc(&phba->cgn_fabric_warn_cnt); in lpfc_els_rcv_fpin_cgn()
9590 atomic_inc(&phba->cgn_sync_warn_cnt); in lpfc_els_rcv_fpin_cgn()
9594 phba->cgn_fpin_frequency = in lpfc_els_rcv_fpin_cgn()
9596 value = phba->cgn_fpin_frequency; in lpfc_els_rcv_fpin_cgn()
9597 if (phba->cgn_i) { in lpfc_els_rcv_fpin_cgn()
9599 phba->cgn_i->virt; in lpfc_els_rcv_fpin_cgn()
9600 if (phba->cgn_reg_fpin & in lpfc_els_rcv_fpin_cgn()
9604 if (phba->cgn_reg_fpin & in lpfc_els_rcv_fpin_cgn()
9626 lpfc_printf_log(phba, (nm_log ? KERN_WARNING : KERN_INFO), in lpfc_els_rcv_fpin_cgn()
9638 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_fpin() local
9659 lpfc_printf_log(phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_els_rcv_fpin()
9676 lpfc_els_rcv_fpin_li(phba, tlv); in lpfc_els_rcv_fpin()
9680 lpfc_els_rcv_fpin_del(phba, tlv); in lpfc_els_rcv_fpin()
9684 lpfc_els_rcv_fpin_peer_cgn(phba, tlv); in lpfc_els_rcv_fpin()
9688 deliver = lpfc_els_rcv_fpin_cgn(phba, tlv); in lpfc_els_rcv_fpin()
9692 lpfc_printf_log(phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_els_rcv_fpin()
9700 lpfc_cgn_update_stat(phba, dtag); in lpfc_els_rcv_fpin()
9709 lpfc_printf_log(phba, KERN_WARNING, LOG_CGN_MGMT, in lpfc_els_rcv_fpin()
9757 lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_els_unsol_buffer() argument
9775 if ((phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) == 0) in lpfc_els_unsol_buffer()
9776 lpfc_post_buffer(phba, pring, 1); in lpfc_els_unsol_buffer()
9814 phba->fc_stat.elsRcvFrame++; in lpfc_els_unsol_buffer()
9859 phba->fc_stat.elsRcvPLOGI++; in lpfc_els_unsol_buffer()
9860 ndlp = lpfc_plogi_confirm_nport(phba, payload, ndlp); in lpfc_els_unsol_buffer()
9861 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_els_unsol_buffer()
9862 (phba->pport->fc_flag & FC_PT2PT)) { in lpfc_els_unsol_buffer()
9885 if (!(phba->pport->fc_flag & FC_PT2PT) || in lpfc_els_unsol_buffer()
9886 (phba->pport->fc_flag & FC_PT2PT_PLOGI)) { in lpfc_els_unsol_buffer()
9906 phba->fc_stat.elsRcvFLOGI++; in lpfc_els_unsol_buffer()
9930 phba->fc_stat.elsRcvLOGO++; in lpfc_els_unsol_buffer()
9947 phba->fc_stat.elsRcvPRLO++; in lpfc_els_unsol_buffer()
9957 phba->fc_stat.elsRcvLCB++; in lpfc_els_unsol_buffer()
9961 phba->fc_stat.elsRcvRDP++; in lpfc_els_unsol_buffer()
9965 phba->fc_stat.elsRcvRSCN++; in lpfc_els_unsol_buffer()
9977 phba->fc_stat.elsRcvADISC++; in lpfc_els_unsol_buffer()
9991 phba->fc_stat.elsRcvPDISC++; in lpfc_els_unsol_buffer()
10005 phba->fc_stat.elsRcvFARPR++; in lpfc_els_unsol_buffer()
10013 phba->fc_stat.elsRcvFARP++; in lpfc_els_unsol_buffer()
10021 phba->fc_stat.elsRcvFAN++; in lpfc_els_unsol_buffer()
10030 phba->fc_stat.elsRcvPRLI++; in lpfc_els_unsol_buffer()
10044 phba->fc_stat.elsRcvLIRR++; in lpfc_els_unsol_buffer()
10055 phba->fc_stat.elsRcvRLS++; in lpfc_els_unsol_buffer()
10066 phba->fc_stat.elsRcvRPL++; in lpfc_els_unsol_buffer()
10077 phba->fc_stat.elsRcvRNID++; in lpfc_els_unsol_buffer()
10087 phba->fc_stat.elsRcvRTV++; in lpfc_els_unsol_buffer()
10098 phba->fc_stat.elsRcvRRQ++; in lpfc_els_unsol_buffer()
10109 phba->fc_stat.elsRcvECHO++; in lpfc_els_unsol_buffer()
10134 phba->fc_stat.elsRcvRDF++; in lpfc_els_unsol_buffer()
10189 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_els_unsol_buffer()
10192 lpfc_linkdown(phba); in lpfc_els_unsol_buffer()
10193 lpfc_init_link(phba, mbox, in lpfc_els_unsol_buffer()
10194 phba->cfg_topology, in lpfc_els_unsol_buffer()
10195 phba->cfg_link_speed); in lpfc_els_unsol_buffer()
10199 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) == in lpfc_els_unsol_buffer()
10201 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_els_unsol_buffer()
10212 phba->fc_stat.elsRcvDrop++; in lpfc_els_unsol_buffer()
10228 lpfc_els_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, in lpfc_els_unsol_event() argument
10231 struct lpfc_vport *vport = phba->pport; in lpfc_els_unsol_event()
10242 lpfc_sli_hbqbuf_add_hbqs(phba, LPFC_ELS_HBQ); in lpfc_els_unsol_event()
10246 phba->fc_stat.NoRcvBuf++; in lpfc_els_unsol_event()
10248 if (!(phba->sli3_options & LPFC_SLI3_HBQ_ENABLED)) in lpfc_els_unsol_event()
10249 lpfc_post_buffer(phba, pring, 0); in lpfc_els_unsol_event()
10253 if ((phba->sli3_options & LPFC_SLI3_NPIV_ENABLED) && in lpfc_els_unsol_event()
10257 vport = phba->pport; in lpfc_els_unsol_event()
10259 vport = lpfc_find_vport_by_vpid(phba, in lpfc_els_unsol_event()
10272 if (phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) { in lpfc_els_unsol_event()
10277 elsiocb->context2 = lpfc_sli_ringpostbuf_get(phba, pring, in lpfc_els_unsol_event()
10281 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
10287 lpfc_in_buf_free(phba, (struct lpfc_dmabuf *)elsiocb->context2); in lpfc_els_unsol_event()
10292 if ((phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) && in lpfc_els_unsol_event()
10295 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
10298 lpfc_in_buf_free(phba, elsiocb->context2); in lpfc_els_unsol_event()
10341 lpfc_do_scr_ns_plogi(struct lpfc_hba *phba, struct lpfc_vport *vport) in lpfc_do_scr_ns_plogi() argument
10356 phba->fc_ratov); in lpfc_do_scr_ns_plogi()
10358 jiffies + msecs_to_jiffies(1000 * phba->fc_ratov)); in lpfc_do_scr_ns_plogi()
10367 if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) { in lpfc_do_scr_ns_plogi()
10389 if ((phba->cfg_enable_SmartSAN || in lpfc_do_scr_ns_plogi()
10390 (phba->cfg_fdmi_on == LPFC_FDMI_SUPPORT)) && in lpfc_do_scr_ns_plogi()
10408 lpfc_cmpl_reg_new_vport(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) in lpfc_cmpl_reg_new_vport() argument
10425 if (phba->sli_rev == LPFC_SLI_REV4 && in lpfc_cmpl_reg_new_vport()
10445 lpfc_init_vpi(phba, pmb, vport->vpi); in lpfc_cmpl_reg_new_vport()
10448 rc = lpfc_sli_issue_mbox(phba, pmb, in lpfc_cmpl_reg_new_vport()
10462 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
10472 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
10485 if (vport == phba->pport) { in lpfc_cmpl_reg_new_vport()
10486 if (phba->sli_rev < LPFC_SLI_REV4) in lpfc_cmpl_reg_new_vport()
10494 lpfc_start_fdiscs(phba); in lpfc_cmpl_reg_new_vport()
10495 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
10498 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
10507 mempool_free(pmb, phba->mbox_mem_pool); in lpfc_cmpl_reg_new_vport()
10521 lpfc_register_new_vport(struct lpfc_hba *phba, struct lpfc_vport *vport, in lpfc_register_new_vport() argument
10527 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); in lpfc_register_new_vport()
10533 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_register_new_vport()
10538 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) in lpfc_register_new_vport()
10544 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_register_new_vport()
10572 lpfc_cancel_all_vport_retry_delay_timer(struct lpfc_hba *phba) in lpfc_cancel_all_vport_retry_delay_timer() argument
10580 link_state = phba->link_state; in lpfc_cancel_all_vport_retry_delay_timer()
10581 lpfc_linkdown(phba); in lpfc_cancel_all_vport_retry_delay_timer()
10582 phba->link_state = link_state; in lpfc_cancel_all_vport_retry_delay_timer()
10584 vports = lpfc_create_vport_work_array(phba); in lpfc_cancel_all_vport_retry_delay_timer()
10587 for (i = 0; i <= phba->max_vports && vports[i] != NULL; i++) { in lpfc_cancel_all_vport_retry_delay_timer()
10593 lpfc_destroy_vport_work_array(phba, vports); in lpfc_cancel_all_vport_retry_delay_timer()
10606 lpfc_retry_pport_discovery(struct lpfc_hba *phba) in lpfc_retry_pport_discovery() argument
10611 lpfc_cancel_all_vport_retry_delay_timer(phba); in lpfc_retry_pport_discovery()
10614 ndlp = lpfc_findnode_did(phba->pport, Fabric_DID); in lpfc_retry_pport_discovery()
10623 phba->pport->port_state = LPFC_FLOGI; in lpfc_retry_pport_discovery()
10637 lpfc_fabric_login_reqd(struct lpfc_hba *phba, in lpfc_fabric_login_reqd() argument
10670 lpfc_cmpl_els_fdisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_fdisc() argument
10692 list_for_each_entry(piocb, &phba->fabric_iocb_list, list) { in lpfc_cmpl_els_fdisc()
10702 if (lpfc_fabric_login_reqd(phba, cmdiocb, rspiocb)) { in lpfc_cmpl_els_fdisc()
10703 lpfc_retry_pport_discovery(phba); in lpfc_cmpl_els_fdisc()
10708 if (lpfc_els_retry(phba, cmdiocb, rspiocb)) in lpfc_cmpl_els_fdisc()
10720 if (vport->phba->fc_topology == LPFC_TOPOLOGY_LOOP) in lpfc_cmpl_els_fdisc()
10753 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_els_fdisc()
10759 if (phba->sli_rev == LPFC_SLI_REV4) in lpfc_cmpl_els_fdisc()
10764 } else if ((phba->sli_rev == LPFC_SLI_REV4) && in lpfc_cmpl_els_fdisc()
10770 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
10778 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
10780 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_fdisc()
10795 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_fdisc()
10822 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_fdisc() local
10851 if (phba->sli_rev == LPFC_SLI_REV3) { in lpfc_issue_els_fdisc()
10859 memcpy(pcmd, &vport->phba->pport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_fdisc()
10881 phba->fc_stat.elsXmitFDISC++; in lpfc_issue_els_fdisc()
10890 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_fdisc()
10894 rc = lpfc_issue_fabric_iocb(phba, elsiocb); in lpfc_issue_els_fdisc()
10896 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_fdisc()
10926 lpfc_cmpl_els_npiv_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_npiv_logo() argument
10958 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_npiv_logo()
10982 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_npiv_logo() local
11012 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_npiv_logo()
11016 rc = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_issue_els_npiv_logo()
11018 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_npiv_logo()
11045 struct lpfc_hba *phba = from_timer(phba, t, fabric_block_timer); in lpfc_fabric_block_timeout() local
11049 spin_lock_irqsave(&phba->pport->work_port_lock, iflags); in lpfc_fabric_block_timeout()
11050 tmo_posted = phba->pport->work_port_events & WORKER_FABRIC_BLOCK_TMO; in lpfc_fabric_block_timeout()
11052 phba->pport->work_port_events |= WORKER_FABRIC_BLOCK_TMO; in lpfc_fabric_block_timeout()
11053 spin_unlock_irqrestore(&phba->pport->work_port_lock, iflags); in lpfc_fabric_block_timeout()
11056 lpfc_worker_wake_up(phba); in lpfc_fabric_block_timeout()
11071 lpfc_resume_fabric_iocbs(struct lpfc_hba *phba) in lpfc_resume_fabric_iocbs() argument
11080 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_resume_fabric_iocbs()
11082 if (atomic_read(&phba->fabric_iocb_count) == 0) { in lpfc_resume_fabric_iocbs()
11083 list_remove_head(&phba->fabric_iocb_list, iocb, typeof(*iocb), in lpfc_resume_fabric_iocbs()
11087 atomic_inc(&phba->fabric_iocb_count); in lpfc_resume_fabric_iocbs()
11089 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_resume_fabric_iocbs()
11099 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0); in lpfc_resume_fabric_iocbs()
11108 iocb->iocb_cmpl(phba, iocb, iocb); in lpfc_resume_fabric_iocbs()
11110 atomic_dec(&phba->fabric_iocb_count); in lpfc_resume_fabric_iocbs()
11126 lpfc_unblock_fabric_iocbs(struct lpfc_hba *phba) in lpfc_unblock_fabric_iocbs() argument
11128 clear_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_unblock_fabric_iocbs()
11130 lpfc_resume_fabric_iocbs(phba); in lpfc_unblock_fabric_iocbs()
11144 lpfc_block_fabric_iocbs(struct lpfc_hba *phba) in lpfc_block_fabric_iocbs() argument
11148 blocked = test_and_set_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_block_fabric_iocbs()
11151 mod_timer(&phba->fabric_block_timer, in lpfc_block_fabric_iocbs()
11171 lpfc_cmpl_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_fabric_iocb() argument
11182 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
11188 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
11196 lpfc_block_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
11200 BUG_ON(atomic_read(&phba->fabric_iocb_count) == 0); in lpfc_cmpl_fabric_iocb()
11205 cmdiocb->iocb_cmpl(phba, cmdiocb, rspiocb); in lpfc_cmpl_fabric_iocb()
11207 atomic_dec(&phba->fabric_iocb_count); in lpfc_cmpl_fabric_iocb()
11208 if (!test_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags)) { in lpfc_cmpl_fabric_iocb()
11210 lpfc_resume_fabric_iocbs(phba); in lpfc_cmpl_fabric_iocb()
11239 lpfc_issue_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *iocb) in lpfc_issue_fabric_iocb() argument
11245 BUG_ON(atomic_read(&phba->fabric_iocb_count) > 1); in lpfc_issue_fabric_iocb()
11247 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
11248 ready = atomic_read(&phba->fabric_iocb_count) == 0 && in lpfc_issue_fabric_iocb()
11249 !test_bit(FABRIC_COMANDS_BLOCKED, &phba->bit_flags); in lpfc_issue_fabric_iocb()
11253 atomic_inc(&phba->fabric_iocb_count); in lpfc_issue_fabric_iocb()
11254 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
11264 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0); in lpfc_issue_fabric_iocb()
11270 atomic_dec(&phba->fabric_iocb_count); in lpfc_issue_fabric_iocb()
11273 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
11274 list_add_tail(&iocb->list, &phba->fabric_iocb_list); in lpfc_issue_fabric_iocb()
11275 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_issue_fabric_iocb()
11295 struct lpfc_hba *phba = vport->phba; in lpfc_fabric_abort_vport() local
11298 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_vport()
11299 list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, in lpfc_fabric_abort_vport()
11307 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_vport()
11310 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_vport()
11328 struct lpfc_hba *phba = ndlp->phba; in lpfc_fabric_abort_nport() local
11332 pring = lpfc_phba_elsring(phba); in lpfc_fabric_abort_nport()
11337 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_nport()
11338 list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list, in lpfc_fabric_abort_nport()
11340 if ((lpfc_check_sli_ndlp(phba, pring, piocb, ndlp))) { in lpfc_fabric_abort_nport()
11345 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_nport()
11348 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_nport()
11363 void lpfc_fabric_abort_hba(struct lpfc_hba *phba) in lpfc_fabric_abort_hba() argument
11367 spin_lock_irq(&phba->hbalock); in lpfc_fabric_abort_hba()
11368 list_splice_init(&phba->fabric_iocb_list, &completions); in lpfc_fabric_abort_hba()
11369 spin_unlock_irq(&phba->hbalock); in lpfc_fabric_abort_hba()
11372 lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, in lpfc_fabric_abort_hba()
11386 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_vport_delete_els_xri_aborted() local
11390 spin_lock_irqsave(&phba->sli4_hba.sgl_list_lock, iflag); in lpfc_sli4_vport_delete_els_xri_aborted()
11392 &phba->sli4_hba.lpfc_abts_els_sgl_list, list) { in lpfc_sli4_vport_delete_els_xri_aborted()
11398 spin_unlock_irqrestore(&phba->sli4_hba.sgl_list_lock, iflag); in lpfc_sli4_vport_delete_els_xri_aborted()
11411 lpfc_sli4_els_xri_aborted(struct lpfc_hba *phba, in lpfc_sli4_els_xri_aborted() argument
11423 pring = lpfc_phba_elsring(phba); in lpfc_sli4_els_xri_aborted()
11425 spin_lock_irqsave(&phba->sli4_hba.sgl_list_lock, iflag); in lpfc_sli4_els_xri_aborted()
11427 &phba->sli4_hba.lpfc_abts_els_sgl_list, list) { in lpfc_sli4_els_xri_aborted()
11433 &phba->sli4_hba.lpfc_els_sgl_list); in lpfc_sli4_els_xri_aborted()
11435 spin_unlock_irqrestore(&phba->sli4_hba.sgl_list_lock, in lpfc_sli4_els_xri_aborted()
11439 lpfc_set_rrq_active(phba, ndlp, in lpfc_sli4_els_xri_aborted()
11447 lpfc_worker_wake_up(phba); in lpfc_sli4_els_xri_aborted()
11451 spin_unlock_irqrestore(&phba->sli4_hba.sgl_list_lock, iflag); in lpfc_sli4_els_xri_aborted()
11452 lxri = lpfc_sli4_xri_inrange(phba, xri); in lpfc_sli4_els_xri_aborted()
11456 spin_lock_irqsave(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
11457 sglq_entry = __lpfc_get_active_sglq(phba, lxri); in lpfc_sli4_els_xri_aborted()
11459 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
11463 spin_unlock_irqrestore(&phba->hbalock, iflag); in lpfc_sli4_els_xri_aborted()
11481 struct lpfc_hba *phba; in lpfc_sli_abts_recover_port() local
11485 phba = vport->phba; in lpfc_sli_abts_recover_port()
11487 lpfc_printf_log(phba, KERN_INFO, in lpfc_sli_abts_recover_port()
11492 lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, in lpfc_sli_abts_recover_port()
11549 lpfc_cmpl_els_qfpa(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, in lpfc_cmpl_els_qfpa() argument
11636 lpfc_els_free_iocb(phba, cmdiocb); in lpfc_cmpl_els_qfpa()
11642 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_qfpa() local
11648 ndlp = lpfc_findnode_did(phba->pport, Fabric_DID); in lpfc_issue_els_qfpa()
11666 lpfc_els_free_iocb(vport->phba, elsiocb); in lpfc_issue_els_qfpa()
11670 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 2); in lpfc_issue_els_qfpa()
11672 lpfc_els_free_iocb(phba, elsiocb); in lpfc_issue_els_qfpa()
11749 lpfc_els_free_iocb(vport->phba, elsiocb); in lpfc_vmid_uvem()
11753 ret = lpfc_sli_issue_iocb(vport->phba, LPFC_ELS_RING, elsiocb, 0); in lpfc_vmid_uvem()
11755 lpfc_els_free_iocb(vport->phba, elsiocb); in lpfc_vmid_uvem()
11767 lpfc_cmpl_els_uvem(struct lpfc_hba *phba, struct lpfc_iocbq *icmdiocb, in lpfc_cmpl_els_uvem() argument
11801 spin_lock(&phba->hbalock); in lpfc_cmpl_els_uvem()
11804 phba->pport->vmid_flag |= LPFC_VMID_IN_USE; in lpfc_cmpl_els_uvem()
11805 spin_unlock(&phba->hbalock); in lpfc_cmpl_els_uvem()
11816 lpfc_els_free_iocb(phba, icmdiocb); in lpfc_cmpl_els_uvem()