Lines Matching refs:vport

53 static void lpfc_fabric_abort_vport(struct lpfc_vport *vport);
54 static int lpfc_issue_els_fdisc(struct lpfc_vport *vport,
84 lpfc_els_chk_latt(struct lpfc_vport *vport) in lpfc_els_chk_latt() argument
86 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_chk_latt()
87 struct lpfc_hba *phba = vport->phba; in lpfc_els_chk_latt()
90 if (vport->port_state >= LPFC_VPORT_READY || in lpfc_els_chk_latt()
103 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_els_chk_latt()
115 vport->fc_flag |= FC_ABORT_DISCOVERY; in lpfc_els_chk_latt()
119 lpfc_issue_clear_la(phba, vport); in lpfc_els_chk_latt()
153 lpfc_prep_els_iocb(struct lpfc_vport *vport, uint8_t expectRsp, in lpfc_prep_els_iocb() argument
158 struct lpfc_hba *phba = vport->phba; in lpfc_prep_els_iocb()
270 (vport->fc_flag & FC_PT2PT))) { in lpfc_prep_els_iocb()
273 icmd->un.elsreq64.myID = vport->fc_myDID; in lpfc_prep_els_iocb()
276 icmd->ulpContext = phba->vpi_ids[vport->vpi]; in lpfc_prep_els_iocb()
310 elsiocb->vport = vport; in lpfc_prep_els_iocb()
318 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_prep_els_iocb()
323 vport->port_state, ndlp->nlp_rpi, in lpfc_prep_els_iocb()
324 vport->fc_flag); in lpfc_prep_els_iocb()
327 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_prep_els_iocb()
332 cmdSize, vport->port_state, in lpfc_prep_els_iocb()
333 ndlp->nlp_rpi, vport->fc_flag); in lpfc_prep_els_iocb()
369 lpfc_issue_fabric_reglogin(struct lpfc_vport *vport) in lpfc_issue_fabric_reglogin() argument
371 struct lpfc_hba *phba = vport->phba; in lpfc_issue_fabric_reglogin()
380 ndlp = lpfc_findnode_did(vport, Fabric_DID); in lpfc_issue_fabric_reglogin()
392 vport->port_state = LPFC_FABRIC_CFG_LINK; in lpfc_issue_fabric_reglogin()
395 mbox->vport = vport; in lpfc_issue_fabric_reglogin()
408 rc = lpfc_reg_rpi(phba, vport->vpi, Fabric_DID, (uint8_t *)sp, mbox, in lpfc_issue_fabric_reglogin()
416 mbox->vport = vport; in lpfc_issue_fabric_reglogin()
442 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_fabric_reglogin()
443 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_issue_fabric_reglogin()
461 lpfc_issue_reg_vfi(struct lpfc_vport *vport) in lpfc_issue_reg_vfi() argument
463 struct lpfc_hba *phba = vport->phba; in lpfc_issue_reg_vfi()
472 !(vport->fc_flag & FC_PT2PT)) { in lpfc_issue_reg_vfi()
473 ndlp = lpfc_findnode_did(vport, Fabric_DID); in lpfc_issue_reg_vfi()
487 if ((vport->fc_flag & FC_FABRIC) || (vport->fc_flag & FC_PT2PT)) { in lpfc_issue_reg_vfi()
502 vport->port_state = LPFC_FABRIC_CFG_LINK; in lpfc_issue_reg_vfi()
504 lpfc_reg_vfi(mboxq, vport, dmabuf->phys); in lpfc_issue_reg_vfi()
506 lpfc_reg_vfi(mboxq, vport, 0); in lpfc_issue_reg_vfi()
509 mboxq->vport = vport; in lpfc_issue_reg_vfi()
527 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_reg_vfi()
528 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_issue_reg_vfi()
545 lpfc_issue_unreg_vfi(struct lpfc_vport *vport) in lpfc_issue_unreg_vfi() argument
547 struct lpfc_hba *phba = vport->phba; in lpfc_issue_unreg_vfi()
560 lpfc_unreg_vfi(mboxq, vport); in lpfc_issue_unreg_vfi()
561 mboxq->vport = vport; in lpfc_issue_unreg_vfi()
574 shost = lpfc_shost_from_vport(vport); in lpfc_issue_unreg_vfi()
576 vport->fc_flag &= ~FC_VFI_REGISTERED; in lpfc_issue_unreg_vfi()
600 lpfc_check_clean_addr_bit(struct lpfc_vport *vport, in lpfc_check_clean_addr_bit() argument
603 struct lpfc_hba *phba = vport->phba; in lpfc_check_clean_addr_bit()
605 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_check_clean_addr_bit()
607 if ((vport->fc_prevDID != vport->fc_myDID) || in lpfc_check_clean_addr_bit()
608 memcmp(&vport->fabric_portname, &sp->portName, in lpfc_check_clean_addr_bit()
610 memcmp(&vport->fabric_nodename, &sp->nodeName, in lpfc_check_clean_addr_bit()
612 (vport->vport_flag & FAWWPN_PARAM_CHG)) { in lpfc_check_clean_addr_bit()
614 vport->vport_flag &= ~FAWWPN_PARAM_CHG; in lpfc_check_clean_addr_bit()
627 (vport->fc_prevDID || phba->cfg_delay_discovery)) { in lpfc_check_clean_addr_bit()
629 vport->fc_flag |= FC_DISC_DELAYED; in lpfc_check_clean_addr_bit()
658 lpfc_cmpl_els_flogi_fabric(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_els_flogi_fabric() argument
661 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_flogi_fabric()
662 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_fabric()
668 vport->fc_flag |= FC_FABRIC; in lpfc_cmpl_els_flogi_fabric()
680 vport->fc_flag |= FC_PUBLIC_LOOP; in lpfc_cmpl_els_flogi_fabric()
684 vport->fc_myDID = irsp->un.ulpWord[4] & Mask_DID; in lpfc_cmpl_els_flogi_fabric()
699 fabric_param_changed = lpfc_check_clean_addr_bit(vport, sp); in lpfc_cmpl_els_flogi_fabric()
705 vport->fdmi_hba_mask = LPFC_FDMI2_HBA_ATTR; in lpfc_cmpl_els_flogi_fabric()
707 vport->fdmi_port_mask = LPFC_FDMI2_SMART_ATTR; in lpfc_cmpl_els_flogi_fabric()
709 vport->fdmi_port_mask = LPFC_FDMI2_PORT_ATTR; in lpfc_cmpl_els_flogi_fabric()
711 vport->fdmi_hba_mask = 0; in lpfc_cmpl_els_flogi_fabric()
712 vport->fdmi_port_mask = 0; in lpfc_cmpl_els_flogi_fabric()
716 memcpy(&vport->fabric_portname, &sp->portName, in lpfc_cmpl_els_flogi_fabric()
718 memcpy(&vport->fabric_nodename, &sp->nodeName, in lpfc_cmpl_els_flogi_fabric()
724 lpfc_printf_vlog(vport, KERN_WARNING, in lpfc_cmpl_els_flogi_fabric()
735 lpfc_printf_vlog(vport, KERN_WARNING, in lpfc_cmpl_els_flogi_fabric()
756 if (vport->fc_flag & FC_VFI_REGISTERED) in lpfc_cmpl_els_flogi_fabric()
757 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi_fabric()
761 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_flogi_fabric()
767 &vport->fc_nodes, nlp_listp) { in lpfc_cmpl_els_flogi_fabric()
776 lpfc_unreg_rpi(vport, np); in lpfc_cmpl_els_flogi_fabric()
778 lpfc_cleanup_pending_mbox(vport); in lpfc_cmpl_els_flogi_fabric()
781 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_els_flogi_fabric()
782 lpfc_mbx_unreg_vpi(vport); in lpfc_cmpl_els_flogi_fabric()
784 vport->fc_flag |= FC_VPORT_NEEDS_INIT_VPI; in lpfc_cmpl_els_flogi_fabric()
793 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_els_flogi_fabric()
796 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_flogi_fabric()
801 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_els_flogi_fabric()
802 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
807 lpfc_nlp_set_state(vport, ndlp, NLP_STE_REG_LOGIN_ISSUE); in lpfc_cmpl_els_flogi_fabric()
809 vport->fc_flag & FC_VPORT_NEEDS_REG_VPI) in lpfc_cmpl_els_flogi_fabric()
810 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
812 lpfc_issue_fabric_reglogin(vport); in lpfc_cmpl_els_flogi_fabric()
815 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_els_flogi_fabric()
816 if ((!(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) && in lpfc_cmpl_els_flogi_fabric()
817 (vport->vpi_state & LPFC_VPI_REGISTERED)) { in lpfc_cmpl_els_flogi_fabric()
819 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_flogi_fabric()
820 } else if (vport->fc_flag & FC_VFI_REGISTERED) in lpfc_cmpl_els_flogi_fabric()
821 lpfc_issue_init_vpi(vport); in lpfc_cmpl_els_flogi_fabric()
823 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_flogi_fabric()
825 vport->fc_prevDID, vport->fc_myDID); in lpfc_cmpl_els_flogi_fabric()
826 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi_fabric()
853 lpfc_cmpl_els_flogi_nport(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_els_flogi_nport() argument
856 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_flogi_nport()
857 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_nport()
862 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); in lpfc_cmpl_els_flogi_nport()
863 vport->fc_flag |= FC_PT2PT; in lpfc_cmpl_els_flogi_nport()
874 vport->fc_flag &= ~FC_VFI_REGISTERED; in lpfc_cmpl_els_flogi_nport()
879 rc = memcmp(&vport->fc_portname, &sp->portName, in lpfc_cmpl_els_flogi_nport()
880 sizeof(vport->fc_portname)); in lpfc_cmpl_els_flogi_nport()
885 vport->fc_flag |= FC_PT2PT_PLOGI; in lpfc_cmpl_els_flogi_nport()
895 vport->fc_myDID = PT2PT_LocalID; in lpfc_cmpl_els_flogi_nport()
902 ndlp = lpfc_findnode_did(vport, PT2PT_RemoteID); in lpfc_cmpl_els_flogi_nport()
908 ndlp = lpfc_nlp_init(vport, PT2PT_RemoteID); in lpfc_cmpl_els_flogi_nport()
912 ndlp = lpfc_enable_node(vport, ndlp, in lpfc_cmpl_els_flogi_nport()
923 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_els_flogi_nport()
935 mbox->vport = vport; in lpfc_cmpl_els_flogi_nport()
949 lpfc_disc_start(vport); in lpfc_cmpl_els_flogi_nport()
984 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_flogi() local
985 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_flogi()
994 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_flogi()
1002 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_flogi()
1005 vport->port_state); in lpfc_cmpl_els_flogi()
1035 rc = lpfc_sli4_fcf_rr_next_proc(vport, fcf_index); in lpfc_cmpl_els_flogi()
1045 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_flogi()
1056 lpfc_printf_vlog(vport, KERN_WARNING, LOG_TRACE_EVENT, in lpfc_cmpl_els_flogi()
1070 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP | in lpfc_cmpl_els_flogi()
1079 vport->cfg_discovery_threads = LPFC_MAX_DISC_THREADS; in lpfc_cmpl_els_flogi()
1081 (!(vport->fc_flag & FC_VFI_REGISTERED) || in lpfc_cmpl_els_flogi()
1082 (vport->fc_prevDID != vport->fc_myDID) || in lpfc_cmpl_els_flogi()
1084 if (vport->fc_flag & FC_VFI_REGISTERED) { in lpfc_cmpl_els_flogi()
1088 vport->fc_flag &= ~FC_VFI_REGISTERED; in lpfc_cmpl_els_flogi()
1092 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_els_flogi()
1098 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi()
1105 vport->fc_flag &= ~FC_VPORT_CVL_RCVD; in lpfc_cmpl_els_flogi()
1106 vport->fc_flag &= ~FC_VPORT_LOGO_RCVD; in lpfc_cmpl_els_flogi()
1119 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_flogi()
1125 vport->port_state, vport->fc_flag); in lpfc_cmpl_els_flogi()
1127 if (vport->port_state == LPFC_FLOGI) { in lpfc_cmpl_els_flogi()
1133 rc = lpfc_cmpl_els_flogi_fabric(vport, ndlp, sp, irsp); in lpfc_cmpl_els_flogi()
1135 rc = lpfc_cmpl_els_flogi_nport(vport, ndlp, sp); in lpfc_cmpl_els_flogi()
1137 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_flogi()
1171 lpfc_printf_vlog(vport, KERN_INFO, LOG_FIP | in lpfc_cmpl_els_flogi()
1183 } else if (vport->port_state > LPFC_FLOGI && in lpfc_cmpl_els_flogi()
1184 vport->fc_flag & FC_PT2PT) { in lpfc_cmpl_els_flogi()
1203 lpfc_disc_list_loopmap(vport); in lpfc_cmpl_els_flogi()
1206 lpfc_disc_start(vport); in lpfc_cmpl_els_flogi()
1214 lpfc_issue_clear_la(phba, vport); in lpfc_cmpl_els_flogi()
1276 lpfc_issue_els_flogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_flogi() argument
1279 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_flogi()
1290 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_flogi()
1302 memcpy(pcmd, &vport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_flogi()
1347 lpfc_set_disctmo(vport); in lpfc_issue_els_flogi()
1353 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_flogi()
1363 did = vport->fc_myDID; in lpfc_issue_els_flogi()
1364 vport->fc_myDID = Fabric_DID; in lpfc_issue_els_flogi()
1372 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_issue_els_flogi()
1379 lpfc_els_rsp_acc(vport, ELS_CMD_FLOGI, &defer_flogi_acc, in lpfc_issue_els_flogi()
1384 vport->fc_myDID = did; in lpfc_issue_els_flogi()
1461 lpfc_initial_flogi(struct lpfc_vport *vport) in lpfc_initial_flogi() argument
1465 vport->port_state = LPFC_FLOGI; in lpfc_initial_flogi()
1466 lpfc_set_disctmo(vport); in lpfc_initial_flogi()
1469 ndlp = lpfc_findnode_did(vport, Fabric_DID); in lpfc_initial_flogi()
1472 ndlp = lpfc_nlp_init(vport, Fabric_DID); in lpfc_initial_flogi()
1478 lpfc_enqueue_node(vport, ndlp); in lpfc_initial_flogi()
1481 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_initial_flogi()
1486 if (lpfc_issue_els_flogi(vport, ndlp, 0)) { in lpfc_initial_flogi()
1513 lpfc_initial_fdisc(struct lpfc_vport *vport) in lpfc_initial_fdisc() argument
1518 ndlp = lpfc_findnode_did(vport, Fabric_DID); in lpfc_initial_fdisc()
1521 ndlp = lpfc_nlp_init(vport, Fabric_DID); in lpfc_initial_fdisc()
1525 lpfc_enqueue_node(vport, ndlp); in lpfc_initial_fdisc()
1528 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_initial_fdisc()
1533 if (lpfc_issue_els_fdisc(vport, ndlp, 0)) { in lpfc_initial_fdisc()
1555 lpfc_more_plogi(struct lpfc_vport *vport) in lpfc_more_plogi() argument
1557 if (vport->num_disc_nodes) in lpfc_more_plogi()
1558 vport->num_disc_nodes--; in lpfc_more_plogi()
1561 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_more_plogi()
1564 vport->num_disc_nodes, vport->fc_plogi_cnt, in lpfc_more_plogi()
1565 vport->fc_flag, vport->port_state); in lpfc_more_plogi()
1567 if (vport->fc_flag & FC_NLP_MORE) in lpfc_more_plogi()
1569 lpfc_els_disc_plogi(vport); in lpfc_more_plogi()
1609 struct lpfc_vport *vport = ndlp->vport; in lpfc_plogi_confirm_nport() local
1610 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_plogi_confirm_nport()
1637 new_ndlp = lpfc_findnode_wwpn(vport, &sp->portName); in lpfc_plogi_confirm_nport()
1651 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS | LOG_NODE, in lpfc_plogi_confirm_nport()
1668 new_ndlp = lpfc_nlp_init(vport, ndlp->nlp_DID); in lpfc_plogi_confirm_nport()
1684 new_ndlp = lpfc_enable_node(vport, new_ndlp, in lpfc_plogi_confirm_nport()
1711 if (vport->fc_flag & FC_FABRIC) { in lpfc_plogi_confirm_nport()
1716 lpfc_unreg_rpi(vport, new_ndlp); in lpfc_plogi_confirm_nport()
1759 lpfc_nlp_set_state(vport, new_ndlp, ndlp->nlp_state); in lpfc_plogi_confirm_nport()
1770 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_plogi_confirm_nport()
1809 lpfc_nlp_set_state(vport, ndlp, keep_nlp_state); in lpfc_plogi_confirm_nport()
1817 lpfc_drop_node(vport, ndlp); in lpfc_plogi_confirm_nport()
1820 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_plogi_confirm_nport()
1824 lpfc_unreg_rpi(vport, ndlp); in lpfc_plogi_confirm_nport()
1845 lpfc_nlp_set_state(vport, ndlp, keep_nlp_state); in lpfc_plogi_confirm_nport()
1874 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS | LOG_NODE, in lpfc_plogi_confirm_nport()
1894 lpfc_end_rscn(struct lpfc_vport *vport) in lpfc_end_rscn() argument
1896 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_end_rscn()
1898 if (vport->fc_flag & FC_RSCN_MODE) { in lpfc_end_rscn()
1903 if (vport->fc_rscn_id_cnt || in lpfc_end_rscn()
1904 (vport->fc_flag & FC_RSCN_DISCOVERY) != 0) in lpfc_end_rscn()
1905 lpfc_els_handle_rscn(vport); in lpfc_end_rscn()
1908 vport->fc_flag &= ~FC_RSCN_MODE; in lpfc_end_rscn()
1930 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_rrq() local
1940 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_rrq()
1945 ndlp = lpfc_findnode_did(vport, irsp->un.elsreq64.remoteID); in lpfc_cmpl_els_rrq()
1947 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_rrq()
1957 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_rrq()
1970 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_rrq()
2006 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_plogi() local
2007 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_plogi()
2017 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_plogi()
2022 ndlp = lpfc_findnode_did(vport, irsp->un.elsreq64.remoteID); in lpfc_cmpl_els_plogi()
2024 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_plogi()
2042 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_plogi()
2047 disc, vport->num_disc_nodes); in lpfc_cmpl_els_plogi()
2050 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_plogi()
2073 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_plogi()
2079 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_plogi()
2087 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_plogi()
2091 if (disc && vport->num_disc_nodes) { in lpfc_cmpl_els_plogi()
2093 lpfc_more_plogi(vport); in lpfc_cmpl_els_plogi()
2095 if (vport->num_disc_nodes == 0) { in lpfc_cmpl_els_plogi()
2097 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_cmpl_els_plogi()
2100 lpfc_can_disctmo(vport); in lpfc_cmpl_els_plogi()
2101 lpfc_end_rscn(vport); in lpfc_cmpl_els_plogi()
2132 lpfc_issue_els_plogi(struct lpfc_vport *vport, uint32_t did, uint8_t retry) in lpfc_issue_els_plogi() argument
2134 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_plogi()
2143 ndlp = lpfc_findnode_did(vport, did); in lpfc_issue_els_plogi()
2152 !(vport->fc_flag & FC_OFFLINE_MODE)) { in lpfc_issue_els_plogi()
2153 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_issue_els_plogi()
2170 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, did, in lpfc_issue_els_plogi()
2175 shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_plogi()
2185 memcpy(pcmd, &vport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_plogi()
2192 if ((vport->fc_flag & FC_FABRIC) && !(vport->fc_flag & FC_PUBLIC_LOOP)) in lpfc_issue_els_plogi()
2205 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_plogi()
2246 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_prli() local
2247 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_prli()
2262 vport->fc_prli_sent--; in lpfc_cmpl_els_prli()
2266 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_prli()
2272 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_prli()
2276 vport->num_disc_nodes, ndlp->fc4_prli_sent); in lpfc_cmpl_els_prli()
2279 if (lpfc_els_chk_latt(vport)) in lpfc_cmpl_els_prli()
2292 if ((vport->fc_flag & FC_FABRIC) || in lpfc_cmpl_els_prli()
2293 (vport->cfg_enable_fc4_type != LPFC_ENABLE_BOTH)) { in lpfc_cmpl_els_prli()
2302 lpfc_printf_vlog(vport, mode, loglevel, in lpfc_cmpl_els_prli()
2312 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_prli()
2320 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_prli()
2351 lpfc_issue_els_prli(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_prli() argument
2354 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_prli()
2355 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_prli()
2370 vport->fc_flag & FC_RSCN_MODE && in lpfc_issue_els_prli()
2371 vport->nvmei_support) in lpfc_issue_els_prli()
2394 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_issue_els_prli()
2405 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_issue_els_prli()
2408 lpfc_disc_state_machine(vport, ndlp, NULL, NLP_EVT_DEVICE_RM); in lpfc_issue_els_prli()
2412 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_prli()
2443 if (vport->cfg_first_burst_size) in lpfc_issue_els_prli()
2489 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_prli()
2502 vport->fc_prli_sent++; in lpfc_issue_els_prli()
2538 lpfc_rscn_disc(struct lpfc_vport *vport) in lpfc_rscn_disc() argument
2540 lpfc_can_disctmo(vport); in lpfc_rscn_disc()
2544 if (vport->fc_npr_cnt) in lpfc_rscn_disc()
2545 if (lpfc_els_disc_plogi(vport)) in lpfc_rscn_disc()
2548 lpfc_end_rscn(vport); in lpfc_rscn_disc()
2562 lpfc_adisc_done(struct lpfc_vport *vport) in lpfc_adisc_done() argument
2564 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_adisc_done()
2565 struct lpfc_hba *phba = vport->phba; in lpfc_adisc_done()
2572 !(vport->fc_flag & FC_RSCN_MODE) && in lpfc_adisc_done()
2582 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2583 lpfc_issue_reg_vpi(phba, vport); in lpfc_adisc_done()
2590 if (vport->port_state < LPFC_VPORT_READY) { in lpfc_adisc_done()
2592 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2593 if (!(vport->fc_flag & FC_ABORT_DISCOVERY)) { in lpfc_adisc_done()
2594 vport->num_disc_nodes = 0; in lpfc_adisc_done()
2596 if (vport->fc_npr_cnt) in lpfc_adisc_done()
2597 lpfc_els_disc_plogi(vport); in lpfc_adisc_done()
2598 if (!vport->num_disc_nodes) { in lpfc_adisc_done()
2600 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_adisc_done()
2602 lpfc_can_disctmo(vport); in lpfc_adisc_done()
2603 lpfc_end_rscn(vport); in lpfc_adisc_done()
2606 vport->port_state = LPFC_VPORT_READY; in lpfc_adisc_done()
2608 lpfc_rscn_disc(vport); in lpfc_adisc_done()
2621 lpfc_more_adisc(struct lpfc_vport *vport) in lpfc_more_adisc() argument
2623 if (vport->num_disc_nodes) in lpfc_more_adisc()
2624 vport->num_disc_nodes--; in lpfc_more_adisc()
2626 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_more_adisc()
2629 vport->num_disc_nodes, vport->fc_adisc_cnt, in lpfc_more_adisc()
2630 vport->fc_flag, vport->port_state); in lpfc_more_adisc()
2632 if (vport->fc_flag & FC_NLP_MORE) { in lpfc_more_adisc()
2633 lpfc_set_disctmo(vport); in lpfc_more_adisc()
2635 lpfc_els_disc_adisc(vport); in lpfc_more_adisc()
2637 if (!vport->num_disc_nodes) in lpfc_more_adisc()
2638 lpfc_adisc_done(vport); in lpfc_more_adisc()
2662 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_adisc() local
2663 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_adisc()
2674 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_adisc()
2687 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_adisc()
2691 irsp->ulpTimeout, disc, vport->num_disc_nodes); in lpfc_cmpl_els_adisc()
2693 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_adisc()
2708 lpfc_set_disctmo(vport); in lpfc_cmpl_els_adisc()
2713 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_adisc()
2719 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_adisc()
2723 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_adisc()
2727 if (disc && vport->num_disc_nodes) in lpfc_cmpl_els_adisc()
2728 lpfc_more_adisc(vport); in lpfc_cmpl_els_adisc()
2755 lpfc_issue_els_adisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_adisc() argument
2758 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_adisc()
2759 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_adisc()
2766 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_adisc()
2780 memcpy(&ap->portName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_adisc()
2781 memcpy(&ap->nodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_issue_els_adisc()
2782 ap->DID = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_adisc()
2784 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_adisc()
2821 struct lpfc_vport *vport = ndlp->vport; in lpfc_cmpl_els_logo() local
2822 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_logo()
2836 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_logo()
2842 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_logo()
2846 irsp->ulpTimeout, vport->num_disc_nodes); in lpfc_cmpl_els_logo()
2848 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_logo()
2858 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_logo()
2871 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_logo()
2883 lpfc_disc_state_machine(vport, ndlp, cmdiocb, NLP_EVT_CMPL_LOGO); in lpfc_cmpl_els_logo()
2888 if ((vport->fc_flag & FC_PT2PT) && in lpfc_cmpl_els_logo()
2889 !(vport->fc_flag & FC_PT2PT_PLOGI)) { in lpfc_cmpl_els_logo()
2892 if ((vport->cfg_enable_fc4_type == LPFC_ENABLE_BOTH) || in lpfc_cmpl_els_logo()
2893 (vport->cfg_enable_fc4_type == LPFC_ENABLE_NVME)) { in lpfc_cmpl_els_logo()
2904 mbox->vport = vport; in lpfc_cmpl_els_logo()
2920 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_cmpl_els_logo()
2925 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_logo()
2930 vport->num_disc_nodes); in lpfc_cmpl_els_logo()
2931 lpfc_disc_start(vport); in lpfc_cmpl_els_logo()
2959 lpfc_issue_els_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_logo() argument
2962 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_logo()
2963 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_logo()
2977 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_logo()
2987 *((uint32_t *) (pcmd)) = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_logo()
2989 memcpy(pcmd, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_logo()
2991 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_logo()
3013 lpfc_nlp_set_state(vport, ndlp, NLP_STE_LOGO_ISSUE); in lpfc_issue_els_logo()
3036 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_cmd() local
3041 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_cmd()
3047 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_cmd()
3053 lpfc_els_chk_latt(vport); in lpfc_cmpl_els_cmd()
3072 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_disc_cmd() local
3081 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_disc_cmd()
3086 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_disc_cmd()
3110 lpfc_issue_els_scr(vport, cmdiocb->retry); in lpfc_cmpl_els_disc_cmd()
3114 lpfc_issue_els_rdf(vport, cmdiocb->retry); in lpfc_cmpl_els_disc_cmd()
3123 lpfc_printf_vlog(vport, KERN_WARNING, LOG_ELS, in lpfc_cmpl_els_disc_cmd()
3145 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_disc_cmd()
3154 lpfc_els_chk_latt(vport); in lpfc_cmpl_els_disc_cmd()
3181 lpfc_issue_els_scr(struct lpfc_vport *vport, uint8_t retry) in lpfc_issue_els_scr() argument
3183 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_scr()
3191 ndlp = lpfc_findnode_did(vport, Fabric_Cntl_DID); in lpfc_issue_els_scr()
3193 ndlp = lpfc_nlp_init(vport, Fabric_Cntl_DID); in lpfc_issue_els_scr()
3196 lpfc_enqueue_node(vport, ndlp); in lpfc_issue_els_scr()
3198 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_issue_els_scr()
3203 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_scr()
3223 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_scr()
3242 if (!(vport->fc_flag & FC_PT2PT)) in lpfc_issue_els_scr()
3268 lpfc_issue_els_rscn(struct lpfc_vport *vport, uint8_t retry) in lpfc_issue_els_rscn() argument
3270 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rscn()
3282 !(vport->fc_flag & FC_PUBLIC_LOOP)) in lpfc_issue_els_rscn()
3285 if (vport->fc_flag & FC_PT2PT) { in lpfc_issue_els_rscn()
3287 ndlp = lpfc_findnode_mapped(vport); in lpfc_issue_els_rscn()
3293 ndlp = lpfc_findnode_did(vport, nportid); in lpfc_issue_els_rscn()
3296 ndlp = lpfc_nlp_init(vport, nportid); in lpfc_issue_els_rscn()
3299 lpfc_enqueue_node(vport, ndlp); in lpfc_issue_els_rscn()
3301 ndlp = lpfc_enable_node(vport, ndlp, in lpfc_issue_els_rscn()
3308 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_rscn()
3325 nportid = vport->fc_myDID; in lpfc_issue_els_rscn()
3332 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_rscn()
3351 if (!(vport->fc_flag & FC_PT2PT)) in lpfc_issue_els_rscn()
3380 lpfc_issue_els_farpr(struct lpfc_vport *vport, uint32_t nportid, uint8_t retry) in lpfc_issue_els_farpr() argument
3382 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_farpr()
3393 ndlp = lpfc_findnode_did(vport, nportid); in lpfc_issue_els_farpr()
3395 ndlp = lpfc_nlp_init(vport, nportid); in lpfc_issue_els_farpr()
3398 lpfc_enqueue_node(vport, ndlp); in lpfc_issue_els_farpr()
3400 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_issue_els_farpr()
3405 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_farpr()
3425 *lp++ = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_farpr()
3429 memcpy(&fp->RportName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_farpr()
3430 memcpy(&fp->RnodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_issue_els_farpr()
3431 ondlp = lpfc_findnode_did(vport, nportid); in lpfc_issue_els_farpr()
3439 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_farpr()
3480 lpfc_issue_els_rdf(struct lpfc_vport *vport, uint8_t retry) in lpfc_issue_els_rdf() argument
3482 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rdf()
3490 ndlp = lpfc_findnode_did(vport, Fabric_Cntl_DID); in lpfc_issue_els_rdf()
3492 ndlp = lpfc_nlp_init(vport, Fabric_Cntl_DID); in lpfc_issue_els_rdf()
3495 lpfc_enqueue_node(vport, ndlp); in lpfc_issue_els_rdf()
3497 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_issue_els_rdf()
3503 if (vport->port_type == LPFC_NPIV_PORT) { in lpfc_issue_els_rdf()
3508 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_rdf()
3534 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_rdf()
3538 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_issue_els_rdf()
3574 lpfc_cancel_retry_delay_tmo(struct lpfc_vport *vport, struct lpfc_nodelist *nlp) in lpfc_cancel_retry_delay_tmo() argument
3576 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cancel_retry_delay_tmo()
3596 if (vport->num_disc_nodes) { in lpfc_cancel_retry_delay_tmo()
3597 if (vport->port_state < LPFC_VPORT_READY) { in lpfc_cancel_retry_delay_tmo()
3599 lpfc_more_adisc(vport); in lpfc_cancel_retry_delay_tmo()
3602 lpfc_more_plogi(vport); in lpfc_cancel_retry_delay_tmo()
3603 if (vport->num_disc_nodes == 0) { in lpfc_cancel_retry_delay_tmo()
3605 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_cancel_retry_delay_tmo()
3607 lpfc_can_disctmo(vport); in lpfc_cancel_retry_delay_tmo()
3608 lpfc_end_rscn(vport); in lpfc_cancel_retry_delay_tmo()
3634 struct lpfc_vport *vport = ndlp->vport; in lpfc_els_retry_delay() local
3635 struct lpfc_hba *phba = vport->phba; in lpfc_els_retry_delay()
3670 struct lpfc_vport *vport = ndlp->vport; in lpfc_els_retry_delay_handler() local
3671 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_retry_delay_handler()
3696 lpfc_issue_els_flogi(vport, ndlp, retry); in lpfc_els_retry_delay_handler()
3699 if (!lpfc_issue_els_plogi(vport, ndlp->nlp_DID, retry)) { in lpfc_els_retry_delay_handler()
3701 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_els_retry_delay_handler()
3705 if (!lpfc_issue_els_adisc(vport, ndlp, retry)) { in lpfc_els_retry_delay_handler()
3707 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_els_retry_delay_handler()
3712 if (!lpfc_issue_els_prli(vport, ndlp, retry)) { in lpfc_els_retry_delay_handler()
3714 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PRLI_ISSUE); in lpfc_els_retry_delay_handler()
3718 if (!lpfc_issue_els_logo(vport, ndlp, retry)) { in lpfc_els_retry_delay_handler()
3720 lpfc_nlp_set_state(vport, ndlp, NLP_STE_LOGO_ISSUE); in lpfc_els_retry_delay_handler()
3724 if (!(vport->fc_flag & FC_VPORT_NEEDS_INIT_VPI)) in lpfc_els_retry_delay_handler()
3725 lpfc_issue_els_fdisc(vport, ndlp, retry); in lpfc_els_retry_delay_handler()
3744 lpfc_link_reset(struct lpfc_vport *vport) in lpfc_link_reset() argument
3746 struct lpfc_hba *phba = vport->phba; in lpfc_link_reset()
3751 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_link_reset()
3774 mbox->vport = vport; in lpfc_link_reset()
3812 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_els_retry() local
3813 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_retry()
3840 ndlp = lpfc_findnode_did(vport, did); in lpfc_els_retry()
3846 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_els_retry()
3881 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_els_retry()
3949 if ((vport->fc_flag & FC_PT2PT) && in lpfc_els_retry()
3956 lpfc_printf_vlog(vport, KERN_WARNING, LOG_ELS, in lpfc_els_retry()
3962 vport->fc_flag |= FC_PT2PT_NO_NVME; in lpfc_els_retry()
4012 lpfc_printf_vlog(vport, KERN_ERR, in lpfc_els_retry()
4017 lpfc_vport_set_state(vport, in lpfc_els_retry()
4050 vport->fc_sparam.cmn.bbRcvSizeMsb &= 0xf; in lpfc_els_retry()
4052 lpfc_printf_vlog(vport, KERN_ERR, in lpfc_els_retry()
4066 lpfc_printf_vlog(vport, KERN_ERR, in lpfc_els_retry()
4071 lpfc_vport_set_state(vport, in lpfc_els_retry()
4108 rc = lpfc_link_reset(vport); in lpfc_els_retry()
4141 maxretry = vport->cfg_devloss_tmo; in lpfc_els_retry()
4151 if ((vport->load_flag & FC_UNLOADING) != 0) in lpfc_els_retry()
4159 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_retry()
4169 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_retry()
4181 if (timer_pending(&vport->fc_disctmo) || in lpfc_els_retry()
4182 (vport->fc_flag & FC_RSCN_MODE)) in lpfc_els_retry()
4183 lpfc_set_disctmo(vport); in lpfc_els_retry()
4201 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_retry()
4204 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_retry()
4212 lpfc_issue_els_flogi(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
4215 lpfc_issue_els_fdisc(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
4220 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_retry()
4223 lpfc_issue_els_plogi(vport, did, cmdiocb->retry); in lpfc_els_retry()
4227 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_els_retry()
4228 lpfc_issue_els_adisc(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
4233 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PRLI_ISSUE); in lpfc_els_retry()
4234 lpfc_issue_els_prli(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
4238 lpfc_nlp_set_state(vport, ndlp, NLP_STE_LOGO_ISSUE); in lpfc_els_retry()
4239 lpfc_issue_els_logo(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
4245 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_els_retry()
4252 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_retry()
4430 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_logo_acc() local
4434 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_cmpl_els_logo_acc()
4438 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_logo_acc()
4450 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_els_logo_acc()
4492 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE, in lpfc_mbx_cmpl_dflt_rpi()
4505 lpfc_drop_node(ndlp->vport, ndlp); in lpfc_mbx_cmpl_dflt_rpi()
4533 struct lpfc_vport *vport = ndlp ? ndlp->vport : NULL; in lpfc_cmpl_els_rsp() local
4534 struct Scsi_Host *shost = vport ? lpfc_shost_from_vport(vport) : NULL; in lpfc_cmpl_els_rsp()
4543 if (!vport) { in lpfc_cmpl_els_rsp()
4565 if (!ndlp || !NLP_CHK_NODE_ACT(ndlp) || lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_rsp()
4587 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_cmpl_els_rsp()
4592 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_rsp()
4602 if (!lpfc_unreg_rpi(vport, ndlp) && in lpfc_cmpl_els_rsp()
4603 (!(vport->fc_flag & FC_PT2PT)) && in lpfc_cmpl_els_rsp()
4606 lpfc_printf_vlog(vport, KERN_INFO, in lpfc_cmpl_els_rsp()
4626 mbox->vport = vport; in lpfc_cmpl_els_rsp()
4634 lpfc_nlp_set_state(vport, ndlp, in lpfc_cmpl_els_rsp()
4650 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_rsp()
4739 lpfc_els_rsp_acc(struct lpfc_vport *vport, uint32_t flag, in lpfc_els_rsp_acc() argument
4743 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_rsp_acc()
4744 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_acc()
4759 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, in lpfc_els_rsp_acc()
4775 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_acc()
4782 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, in lpfc_els_rsp_acc()
4814 memcpy(&sp->portName, &vport->fc_sparam.portName, in lpfc_els_rsp_acc()
4816 memcpy(&sp->nodeName, &vport->fc_sparam.nodeName, in lpfc_els_rsp_acc()
4819 memcpy(pcmd, &vport->fc_sparam, in lpfc_els_rsp_acc()
4838 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_acc()
4844 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, in lpfc_els_rsp_acc()
4860 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_acc()
4910 lpfc_els_rsp_reject(struct lpfc_vport *vport, uint32_t rejectError, in lpfc_els_rsp_reject() argument
4914 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_reject()
4923 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_reject()
4942 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_reject()
4949 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_reject()
4984 lpfc_els_rsp_adisc_acc(struct lpfc_vport *vport, struct lpfc_iocbq *oldiocb, in lpfc_els_rsp_adisc_acc() argument
4987 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_adisc_acc()
4996 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_adisc_acc()
5007 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_adisc_acc()
5020 memcpy(&ap->portName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_els_rsp_adisc_acc()
5021 memcpy(&ap->nodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_els_rsp_adisc_acc()
5022 ap->DID = be32_to_cpu(vport->fc_myDID); in lpfc_els_rsp_adisc_acc()
5024 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_adisc_acc()
5037 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_adisc_acc()
5043 ndlp->nlp_rpi, vport->fc_flag); in lpfc_els_rsp_adisc_acc()
5067 lpfc_els_rsp_prli_acc(struct lpfc_vport *vport, struct lpfc_iocbq *oldiocb, in lpfc_els_rsp_prli_acc() argument
5070 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_prli_acc()
5093 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_prli_acc()
5107 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_prli_acc()
5118 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_prli_acc()
5175 lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_DISC, in lpfc_els_rsp_prli_acc()
5186 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rsp_prli_acc()
5191 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_prli_acc()
5233 lpfc_els_rsp_rnid_acc(struct lpfc_vport *vport, uint8_t format, in lpfc_els_rsp_rnid_acc() argument
5236 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rnid_acc()
5249 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_rnid_acc()
5260 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rnid_acc()
5271 memcpy(&rn->portName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_els_rsp_rnid_acc()
5272 memcpy(&rn->nodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_els_rsp_rnid_acc()
5280 &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_els_rsp_rnid_acc()
5291 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_rnid_acc()
5315 lpfc_els_clear_rrq(struct lpfc_vport *vport, in lpfc_els_clear_rrq() argument
5318 struct lpfc_hba *phba = vport->phba; in lpfc_els_clear_rrq()
5332 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_clear_rrq()
5340 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_clear_rrq()
5343 if (vport->fc_myDID == be32_to_cpu(bf_get(rrq_did, rrq))) in lpfc_els_clear_rrq()
5347 prrq = lpfc_get_active_rrq(vport, xri, ndlp->nlp_DID); in lpfc_els_clear_rrq()
5365 lpfc_els_rsp_echo_acc(struct lpfc_vport *vport, uint8_t *data, in lpfc_els_rsp_echo_acc() argument
5368 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_echo_acc()
5381 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_echo_acc()
5390 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_echo_acc()
5398 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_echo_acc()
5433 lpfc_els_disc_adisc(struct lpfc_vport *vport) in lpfc_els_disc_adisc() argument
5435 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_disc_adisc()
5440 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_els_disc_adisc()
5450 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_els_disc_adisc()
5451 lpfc_issue_els_adisc(vport, ndlp, 0); in lpfc_els_disc_adisc()
5453 vport->num_disc_nodes++; in lpfc_els_disc_adisc()
5454 if (vport->num_disc_nodes >= in lpfc_els_disc_adisc()
5455 vport->cfg_discovery_threads) { in lpfc_els_disc_adisc()
5457 vport->fc_flag |= FC_NLP_MORE; in lpfc_els_disc_adisc()
5465 vport->fc_flag &= ~FC_NLP_MORE; in lpfc_els_disc_adisc()
5491 lpfc_els_disc_plogi(struct lpfc_vport *vport) in lpfc_els_disc_plogi() argument
5493 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_disc_plogi()
5498 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_els_disc_plogi()
5506 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_els_disc_plogi()
5507 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_els_disc_plogi()
5509 vport->num_disc_nodes++; in lpfc_els_disc_plogi()
5510 if (vport->num_disc_nodes >= in lpfc_els_disc_plogi()
5511 vport->cfg_discovery_threads) { in lpfc_els_disc_plogi()
5513 vport->fc_flag |= FC_NLP_MORE; in lpfc_els_disc_plogi()
5520 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_disc_plogi()
5522 sentplogi, vport->fc_flag); in lpfc_els_disc_plogi()
5525 lpfc_set_disctmo(vport); in lpfc_els_disc_plogi()
5529 vport->fc_flag &= ~FC_NLP_MORE; in lpfc_els_disc_plogi()
5643 struct lpfc_vport *vport) in lpfc_rdp_res_bbc_desc() argument
5649 bbCredit = vport->fc_sparam.cmn.bbCreditLsb | in lpfc_rdp_res_bbc_desc()
5650 (vport->fc_sparam.cmn.bbCreditMsb << 8); in lpfc_rdp_res_bbc_desc()
5652 if (vport->phba->fc_topology != LPFC_TOPOLOGY_LOOP) { in lpfc_rdp_res_bbc_desc()
5653 bbCredit = vport->phba->fc_fabparam.cmn.bbCreditLsb | in lpfc_rdp_res_bbc_desc()
5654 (vport->phba->fc_fabparam.cmn.bbCreditMsb << 8); in lpfc_rdp_res_bbc_desc()
5813 uint8_t *page_a0, struct lpfc_vport *vport) in lpfc_rdp_res_opd_desc() argument
5913 struct lpfc_vport *vport) in lpfc_rdp_res_diag_port_names() argument
5918 memcpy(desc->port_names.wwnn, &vport->fc_nodename, in lpfc_rdp_res_diag_port_names()
5921 memcpy(desc->port_names.wwpn, &vport->fc_portname, in lpfc_rdp_res_diag_port_names()
5930 struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_rdp_res_attach_port_names() argument
5934 if (vport->fc_flag & FC_FABRIC) { in lpfc_rdp_res_attach_port_names()
5935 memcpy(desc->port_names.wwnn, &vport->fabric_nodename, in lpfc_rdp_res_attach_port_names()
5938 memcpy(desc->port_names.wwpn, &vport->fabric_portname, in lpfc_rdp_res_attach_port_names()
5957 struct lpfc_vport *vport = ndlp->vport; in lpfc_els_rdp_cmpl() local
5974 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, in lpfc_els_rdp_cmpl()
5985 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rdp_cmpl()
6015 (len + pcmd), vport); in lpfc_els_rdp_cmpl()
6017 (len + pcmd), vport, ndlp); in lpfc_els_rdp_cmpl()
6021 &rdp_context->link_stat, vport); in lpfc_els_rdp_cmpl()
6038 rdp_context->page_a0, vport); in lpfc_els_rdp_cmpl()
6060 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, lpfc_max_els_tries, in lpfc_els_rdp_cmpl()
6100 mbox->vport = rdp_context->ndlp->vport; in lpfc_get_rdp_info()
6133 lpfc_els_rcv_rdp(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rdp() argument
6136 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rdp()
6161 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_rdp()
6189 lpfc_printf_vlog(ndlp->vport, KERN_WARNING, LOG_ELS, in lpfc_els_rcv_rdp()
6206 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rdp()
6317 lpfc_sli4_set_beacon(struct lpfc_vport *vport, in lpfc_sli4_set_beacon() argument
6321 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_set_beacon()
6338 mbox->vport = phba->pport; in lpfc_sli4_set_beacon()
6403 lpfc_els_rcv_lcb(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_lcb() argument
6406 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_lcb()
6418 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_lcb()
6457 if (lpfc_sli4_set_beacon(vport, lcb_context, state)) { in lpfc_els_rcv_lcb()
6458 lpfc_printf_vlog(ndlp->vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_els_rcv_lcb()
6469 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_lcb()
6484 lpfc_els_flush_rscn(struct lpfc_vport *vport) in lpfc_els_flush_rscn() argument
6486 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_flush_rscn()
6487 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_rscn()
6491 if (vport->fc_rscn_flush) { in lpfc_els_flush_rscn()
6497 vport->fc_rscn_flush = 1; in lpfc_els_flush_rscn()
6500 for (i = 0; i < vport->fc_rscn_id_cnt; i++) { in lpfc_els_flush_rscn()
6501 lpfc_in_buf_free(phba, vport->fc_rscn_id_list[i]); in lpfc_els_flush_rscn()
6502 vport->fc_rscn_id_list[i] = NULL; in lpfc_els_flush_rscn()
6505 vport->fc_rscn_id_cnt = 0; in lpfc_els_flush_rscn()
6506 vport->fc_flag &= ~(FC_RSCN_MODE | FC_RSCN_DISCOVERY); in lpfc_els_flush_rscn()
6508 lpfc_can_disctmo(vport); in lpfc_els_flush_rscn()
6510 vport->fc_rscn_flush = 0; in lpfc_els_flush_rscn()
6526 lpfc_rscn_payload_check(struct lpfc_vport *vport, uint32_t did) in lpfc_rscn_payload_check() argument
6532 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_rscn_payload_check()
6541 if (vport->fc_flag & FC_RSCN_DISCOVERY) in lpfc_rscn_payload_check()
6545 if (vport->fc_rscn_flush) { in lpfc_rscn_payload_check()
6551 vport->fc_rscn_flush = 1; in lpfc_rscn_payload_check()
6553 for (i = 0; i < vport->fc_rscn_id_cnt; i++) { in lpfc_rscn_payload_check()
6554 lp = vport->fc_rscn_id_list[i]->virt; in lpfc_rscn_payload_check()
6582 vport->fc_rscn_flush = 0; in lpfc_rscn_payload_check()
6586 vport->fc_rscn_flush = 0; in lpfc_rscn_payload_check()
6602 lpfc_rscn_recovery_check(struct lpfc_vport *vport) in lpfc_rscn_recovery_check() argument
6607 list_for_each_entry(ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_rscn_recovery_check()
6610 !lpfc_rscn_payload_check(vport, ndlp->nlp_DID)) in lpfc_rscn_recovery_check()
6614 if (vport->phba->nvmet_support) in lpfc_rscn_recovery_check()
6634 lpfc_nvme_rescan_port(vport, ndlp); in lpfc_rscn_recovery_check()
6636 lpfc_disc_state_machine(vport, ndlp, NULL, in lpfc_rscn_recovery_check()
6638 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_rscn_recovery_check()
6652 lpfc_send_rscn_event(struct lpfc_vport *vport, in lpfc_send_rscn_event() argument
6656 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_send_rscn_event()
6668 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_send_rscn_event()
6709 lpfc_els_rcv_rscn(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rscn() argument
6712 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_rcv_rscn()
6713 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rscn()
6727 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
6729 vport->fc_flag, payload_len, *lp, in lpfc_els_rcv_rscn()
6730 vport->fc_rscn_id_cnt); in lpfc_els_rcv_rscn()
6733 lpfc_send_rscn_event(vport, cmdiocb); in lpfc_els_rcv_rscn()
6740 if (vport->fc_flag & FC_PT2PT) { in lpfc_els_rcv_rscn()
6742 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_rscn()
6744 *lp, vport->fc_flag, payload_len); in lpfc_els_rcv_rscn()
6745 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
6752 lpfc_nvme_rescan_port(vport, ndlp); in lpfc_els_rcv_rscn()
6759 if (vport->port_state <= LPFC_NS_QRY) { in lpfc_els_rcv_rscn()
6760 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
6762 ndlp->nlp_DID, vport->port_state, ndlp->nlp_flag); in lpfc_els_rcv_rscn()
6764 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
6772 !(vport->cfg_peer_port_login)) { in lpfc_els_rcv_rscn()
6785 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
6788 vport->fc_flag, payload_len, in lpfc_els_rcv_rscn()
6789 *lp, vport->fc_rscn_id_cnt); in lpfc_els_rcv_rscn()
6790 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
6792 ndlp->nlp_DID, vport->port_state, in lpfc_els_rcv_rscn()
6795 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, in lpfc_els_rcv_rscn()
6802 if (vport->fc_rscn_flush) { in lpfc_els_rcv_rscn()
6804 vport->fc_flag |= FC_RSCN_DISCOVERY; in lpfc_els_rcv_rscn()
6807 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
6811 vport->fc_rscn_flush = 1; in lpfc_els_rcv_rscn()
6814 rscn_cnt = vport->fc_rscn_id_cnt; in lpfc_els_rcv_rscn()
6818 if (vport->fc_flag & (FC_RSCN_MODE | FC_NDISC_ACTIVE)) { in lpfc_els_rcv_rscn()
6819 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
6821 ndlp->nlp_DID, vport->port_state, ndlp->nlp_flag); in lpfc_els_rcv_rscn()
6824 vport->fc_flag |= FC_RSCN_DEFERRED; in lpfc_els_rcv_rscn()
6827 if (vport->fc_flag & FC_DISC_TMO) { in lpfc_els_rcv_rscn()
6829 mod_timer(&vport->fc_disctmo, in lpfc_els_rcv_rscn()
6833 !(vport->fc_flag & FC_RSCN_DISCOVERY)) { in lpfc_els_rcv_rscn()
6834 vport->fc_flag |= FC_RSCN_MODE; in lpfc_els_rcv_rscn()
6837 cmd = vport->fc_rscn_id_list[rscn_cnt-1]->virt; in lpfc_els_rcv_rscn()
6847 vport->fc_rscn_id_list[rscn_cnt] = pcmd; in lpfc_els_rcv_rscn()
6848 vport->fc_rscn_id_cnt++; in lpfc_els_rcv_rscn()
6855 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
6858 vport->fc_rscn_id_cnt, vport->fc_flag, in lpfc_els_rcv_rscn()
6859 vport->port_state); in lpfc_els_rcv_rscn()
6861 vport->fc_flag |= FC_RSCN_DISCOVERY; in lpfc_els_rcv_rscn()
6864 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
6867 vport->fc_rscn_id_cnt, vport->fc_flag, in lpfc_els_rcv_rscn()
6868 vport->port_state); in lpfc_els_rcv_rscn()
6871 vport->fc_rscn_flush = 0; in lpfc_els_rcv_rscn()
6873 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
6875 lpfc_rscn_recovery_check(vport); in lpfc_els_rcv_rscn()
6878 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
6880 ndlp->nlp_DID, vport->port_state, ndlp->nlp_flag); in lpfc_els_rcv_rscn()
6883 vport->fc_flag |= FC_RSCN_MODE; in lpfc_els_rcv_rscn()
6885 vport->fc_rscn_id_list[vport->fc_rscn_id_cnt++] = pcmd; in lpfc_els_rcv_rscn()
6887 vport->fc_rscn_flush = 0; in lpfc_els_rcv_rscn()
6893 lpfc_set_disctmo(vport); in lpfc_els_rcv_rscn()
6895 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
6897 lpfc_rscn_recovery_check(vport); in lpfc_els_rcv_rscn()
6898 return lpfc_els_handle_rscn(vport); in lpfc_els_rcv_rscn()
6918 lpfc_els_handle_rscn(struct lpfc_vport *vport) in lpfc_els_handle_rscn() argument
6921 struct lpfc_hba *phba = vport->phba; in lpfc_els_handle_rscn()
6924 if (vport->load_flag & FC_UNLOADING) { in lpfc_els_handle_rscn()
6925 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
6930 lpfc_set_disctmo(vport); in lpfc_els_handle_rscn()
6933 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_handle_rscn()
6935 vport->fc_flag, 0, vport->fc_rscn_id_cnt, in lpfc_els_handle_rscn()
6936 vport->port_state, vport->num_disc_nodes, in lpfc_els_handle_rscn()
6937 vport->gidft_inp); in lpfc_els_handle_rscn()
6940 vport->fc_ns_retry = 0; in lpfc_els_handle_rscn()
6941 vport->num_disc_nodes = 0; in lpfc_els_handle_rscn()
6943 ndlp = lpfc_findnode_did(vport, NameServer_DID); in lpfc_els_handle_rscn()
6952 if (lpfc_issue_gidft(vport) > 0) in lpfc_els_handle_rscn()
6955 if (lpfc_issue_gidpt(vport) > 0) in lpfc_els_handle_rscn()
6963 ndlp = lpfc_enable_node(vport, ndlp, in lpfc_els_handle_rscn()
6966 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
6971 ndlp = lpfc_nlp_init(vport, NameServer_DID); in lpfc_els_handle_rscn()
6973 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
6977 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_els_handle_rscn()
6980 lpfc_issue_els_plogi(vport, NameServer_DID, 0); in lpfc_els_handle_rscn()
6987 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
7017 lpfc_els_rcv_flogi(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_flogi() argument
7020 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_rcv_flogi()
7021 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_flogi()
7037 lpfc_set_disctmo(vport); in lpfc_els_rcv_flogi()
7045 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_els_rcv_flogi()
7052 (void) lpfc_check_sparm(vport, ndlp, sp, CLASS3, 1); in lpfc_els_rcv_flogi()
7059 rc = memcmp(&vport->fc_portname, &sp->portName, in lpfc_els_rcv_flogi()
7074 mbox->vport = vport; in lpfc_els_rcv_flogi()
7091 vport->fc_flag |= FC_PT2PT_PLOGI; in lpfc_els_rcv_flogi()
7099 vport->fc_myDID = PT2PT_LocalID; in lpfc_els_rcv_flogi()
7101 vport->fc_myDID = PT2PT_RemoteID; in lpfc_els_rcv_flogi()
7109 fc_flag = vport->fc_flag; in lpfc_els_rcv_flogi()
7110 port_state = vport->port_state; in lpfc_els_rcv_flogi()
7111 vport->fc_flag |= FC_PT2PT; in lpfc_els_rcv_flogi()
7112 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); in lpfc_els_rcv_flogi()
7117 vport->rcv_flogi_cnt++; in lpfc_els_rcv_flogi()
7119 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_flogi()
7122 port_state, vport->port_state, in lpfc_els_rcv_flogi()
7123 fc_flag, vport->fc_flag); in lpfc_els_rcv_flogi()
7130 did = vport->fc_myDID; in lpfc_els_rcv_flogi()
7131 vport->fc_myDID = Fabric_DID; in lpfc_els_rcv_flogi()
7141 vport->fc_myDID = did; in lpfc_els_rcv_flogi()
7143 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_flogi()
7155 lpfc_els_rsp_acc(vport, ELS_CMD_FLOGI, cmdiocb, ndlp, NULL); in lpfc_els_rcv_flogi()
7158 vport->fc_myDID = did; in lpfc_els_rcv_flogi()
7180 lpfc_els_rcv_rnid(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rnid() argument
7200 lpfc_els_rsp_rnid_acc(vport, rn->Format, cmdiocb, ndlp); in lpfc_els_rcv_rnid()
7208 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_els_rcv_rnid()
7224 lpfc_els_rcv_echo(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_echo() argument
7234 lpfc_els_rsp_echo_acc(vport, pcmd, cmdiocb, ndlp); in lpfc_els_rcv_echo()
7252 lpfc_els_rcv_lirr(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_lirr() argument
7262 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_lirr()
7283 lpfc_els_rcv_rrq(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rrq() argument
7286 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rrq()
7287 if (vport->phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_rcv_rrq()
7288 lpfc_els_clear_rrq(vport, cmdiocb, ndlp); in lpfc_els_rcv_rrq()
7366 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rls_acc()
7397 lpfc_els_rcv_rls(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rls() argument
7400 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rls()
7416 mbox->vport = vport; in lpfc_els_rcv_rls()
7434 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rls()
7460 lpfc_els_rcv_rtv(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rtv() argument
7463 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rtv()
7502 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_rtv()
7522 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rtv()
7540 lpfc_issue_els_rrq(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_rrq() argument
7543 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rrq()
7558 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, 0, ndlp, did, in lpfc_issue_els_rrq()
7572 bf_set(rrq_did, els_rrq, vport->fc_myDID); in lpfc_issue_els_rrq()
7577 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_rrq()
7606 struct lpfc_nodelist *ndlp = lpfc_findnode_did(rrq->vport, in lpfc_send_rrq()
7612 return lpfc_issue_els_rrq(rrq->vport, ndlp, in lpfc_send_rrq()
7638 lpfc_els_rsp_rpl_acc(struct lpfc_vport *vport, uint16_t cmdsize, in lpfc_els_rsp_rpl_acc() argument
7641 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rpl_acc()
7647 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_rpl_acc()
7668 rpl_rsp.port_num_blk.portID = be32_to_cpu(vport->fc_myDID); in lpfc_els_rsp_rpl_acc()
7669 memcpy(&rpl_rsp.port_num_blk.portName, &vport->fc_portname, in lpfc_els_rsp_rpl_acc()
7673 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rpl_acc()
7707 lpfc_els_rcv_rpl(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rpl() argument
7724 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_els_rcv_rpl()
7743 lpfc_els_rsp_rpl_acc(vport, cmdsize, cmdiocb, ndlp); in lpfc_els_rcv_rpl()
7773 lpfc_els_rcv_farp(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_farp() argument
7790 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_farp()
7800 if (memcmp(&fp->RportName, &vport->fc_portname, in lpfc_els_rcv_farp()
7807 if (memcmp(&fp->RnodeName, &vport->fc_nodename, in lpfc_els_rcv_farp()
7818 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_rcv_farp()
7820 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_els_rcv_farp()
7825 lpfc_issue_els_farpr(vport, did, 0); in lpfc_els_rcv_farp()
7846 lpfc_els_rcv_farpr(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_farpr() argument
7861 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_farpr()
7864 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_farpr()
7889 lpfc_els_rcv_fan(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_fan() argument
7892 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_fan()
7896 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, "0265 FAN received\n"); in lpfc_els_rcv_fan()
7900 if ((vport == phba->pport) && in lpfc_els_rcv_fan()
7901 (vport->port_state == LPFC_LOCAL_CFG_LINK)) { in lpfc_els_rcv_fan()
7907 lpfc_issue_init_vfi(vport); in lpfc_els_rcv_fan()
7910 vport->fc_myDID = vport->fc_prevDID; in lpfc_els_rcv_fan()
7912 lpfc_issue_fabric_reglogin(vport); in lpfc_els_rcv_fan()
7914 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_fan()
7916 vport->fc_prevDID, vport->fc_myDID); in lpfc_els_rcv_fan()
7917 lpfc_issue_reg_vfi(vport); in lpfc_els_rcv_fan()
7937 struct lpfc_vport *vport = from_timer(vport, t, els_tmofunc); in lpfc_els_timeout() local
7938 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout()
7942 spin_lock_irqsave(&vport->work_port_lock, iflag); in lpfc_els_timeout()
7943 tmo_posted = vport->work_port_events & WORKER_ELS_TMO; in lpfc_els_timeout()
7944 if ((!tmo_posted) && (!(vport->load_flag & FC_UNLOADING))) in lpfc_els_timeout()
7945 vport->work_port_events |= WORKER_ELS_TMO; in lpfc_els_timeout()
7946 spin_unlock_irqrestore(&vport->work_port_lock, iflag); in lpfc_els_timeout()
7948 if ((!tmo_posted) && (!(vport->load_flag & FC_UNLOADING))) in lpfc_els_timeout()
7964 lpfc_els_timeout_handler(struct lpfc_vport *vport) in lpfc_els_timeout_handler() argument
7966 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout_handler()
7998 if (piocb->vport != vport) in lpfc_els_timeout_handler()
8023 ndlp = __lpfc_findnode_rpi(vport, cmd->ulpContext); in lpfc_els_timeout_handler()
8035 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_els_timeout_handler()
8047 mod_timer(&vport->els_tmofunc, in lpfc_els_timeout_handler()
8072 lpfc_els_flush_cmd(struct lpfc_vport *vport) in lpfc_els_flush_cmd() argument
8075 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_cmd()
8081 lpfc_fabric_abort_vport(vport); in lpfc_els_flush_cmd()
8106 if (piocb->vport != vport) in lpfc_els_flush_cmd()
8145 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_els_flush_cmd()
8170 if (piocb->vport != vport) in lpfc_els_flush_cmd()
8178 if (vport == phba->pport) { in lpfc_els_flush_cmd()
8218 struct lpfc_vport *vport; in lpfc_els_flush_all_cmd() local
8221 list_for_each_entry(vport, &phba->port_list, listentry) in lpfc_els_flush_all_cmd()
8222 lpfc_els_flush_cmd(vport); in lpfc_els_flush_all_cmd()
8242 struct lpfc_vport *vport = cmdiocbp->vport; in lpfc_send_els_failure_event() local
8243 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_send_els_failure_event()
8305 lpfc_send_els_event(struct lpfc_vport *vport, in lpfc_send_els_event() argument
8311 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_send_els_event()
8316 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_send_els_event()
8326 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_send_els_event()
8390 lpfc_els_rcv_fpin_li(struct lpfc_vport *vport, struct fc_tlv_desc *tlv) in lpfc_els_rcv_fpin_li() argument
8399 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_fpin_li()
8412 lpfc_els_rcv_fpin(struct lpfc_vport *vport, struct fc_els_fpin *fpin, in lpfc_els_rcv_fpin() argument
8421 if (vport->port_state < LPFC_DISC_AUTH) in lpfc_els_rcv_fpin()
8439 lpfc_els_rcv_fpin_li(vport, tlv); in lpfc_els_rcv_fpin()
8443 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_els_rcv_fpin()
8455 fc_host_fpin_rcv(lpfc_shost_from_vport(vport), fpin_length, in lpfc_els_rcv_fpin()
8475 struct lpfc_vport *vport, struct lpfc_iocbq *elsiocb) in lpfc_els_unsol_buffer() argument
8486 if (!vport || !(elsiocb->context2)) in lpfc_els_unsol_buffer()
8498 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8505 if (lpfc_els_chk_latt(vport)) in lpfc_els_unsol_buffer()
8509 if (vport->load_flag & FC_UNLOADING) in lpfc_els_unsol_buffer()
8513 if ((vport->fc_flag & FC_DISC_DELAYED) && in lpfc_els_unsol_buffer()
8517 ndlp = lpfc_findnode_did(vport, did); in lpfc_els_unsol_buffer()
8520 ndlp = lpfc_nlp_init(vport, did); in lpfc_els_unsol_buffer()
8523 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_els_unsol_buffer()
8528 ndlp = lpfc_enable_node(vport, ndlp, in lpfc_els_unsol_buffer()
8532 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_els_unsol_buffer()
8541 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_els_unsol_buffer()
8551 shost = lpfc_shost_from_vport(vport); in lpfc_els_unsol_buffer()
8562 elsiocb->vport = vport; in lpfc_els_unsol_buffer()
8568 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_unsol_buffer()
8571 cmd, did, vport->port_state, vport->fc_flag, in lpfc_els_unsol_buffer()
8572 vport->fc_myDID, vport->fc_prevDID); in lpfc_els_unsol_buffer()
8575 if ((vport->port_state < LPFC_FABRIC_CFG_LINK) && in lpfc_els_unsol_buffer()
8577 !((cmd == ELS_CMD_PLOGI) && (vport->fc_flag & FC_PT2PT))) { in lpfc_els_unsol_buffer()
8585 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8587 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8593 vport->fc_prevDID = vport->fc_myDID; in lpfc_els_unsol_buffer()
8598 vport->fc_myDID = elsiocb->iocb.un.rcvels.parmRo; in lpfc_els_unsol_buffer()
8599 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_unsol_buffer()
8601 "%x\n", vport->fc_myDID, in lpfc_els_unsol_buffer()
8602 vport->fc_prevDID); in lpfc_els_unsol_buffer()
8605 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
8608 if (vport->fc_flag & FC_DISC_DELAYED) { in lpfc_els_unsol_buffer()
8614 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
8627 lpfc_disc_state_machine(vport, ndlp, elsiocb, in lpfc_els_unsol_buffer()
8632 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8634 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8641 if (vport->port_state >= LPFC_LOCAL_CFG_LINK && in lpfc_els_unsol_buffer()
8642 vport->fc_flag & FC_PT2PT && in lpfc_els_unsol_buffer()
8643 vport->rcv_flogi_cnt >= 1) { in lpfc_els_unsol_buffer()
8650 lpfc_els_rcv_flogi(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8655 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8657 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8660 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
8661 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
8666 lpfc_disc_state_machine(vport, ndlp, elsiocb, NLP_EVT_RCV_LOGO); in lpfc_els_unsol_buffer()
8669 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8671 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8674 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
8675 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
8680 lpfc_disc_state_machine(vport, ndlp, elsiocb, NLP_EVT_RCV_PRLO); in lpfc_els_unsol_buffer()
8684 lpfc_els_rcv_lcb(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8688 lpfc_els_rcv_rdp(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8692 lpfc_els_rcv_rscn(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8697 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8699 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8701 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
8703 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
8708 lpfc_disc_state_machine(vport, ndlp, elsiocb, in lpfc_els_unsol_buffer()
8712 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8714 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8717 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
8722 lpfc_disc_state_machine(vport, ndlp, elsiocb, in lpfc_els_unsol_buffer()
8726 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8728 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8731 lpfc_els_rcv_farpr(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8734 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8736 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8739 lpfc_els_rcv_farp(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8742 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8744 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8747 lpfc_els_rcv_fan(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8751 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8753 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8756 if ((vport->port_state < LPFC_DISC_AUTH) && in lpfc_els_unsol_buffer()
8757 (vport->fc_flag & FC_FABRIC)) { in lpfc_els_unsol_buffer()
8762 lpfc_disc_state_machine(vport, ndlp, elsiocb, NLP_EVT_RCV_PRLI); in lpfc_els_unsol_buffer()
8765 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8767 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8770 lpfc_els_rcv_lirr(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8775 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8777 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8780 lpfc_els_rcv_rls(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8785 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8787 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8790 lpfc_els_rcv_rpl(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8795 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8797 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8800 lpfc_els_rcv_rnid(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8805 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8807 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8809 lpfc_els_rcv_rtv(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8814 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8816 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8819 lpfc_els_rcv_rrq(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8824 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8826 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8829 lpfc_els_rcv_echo(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
8839 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8841 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
8843 lpfc_els_rcv_fpin(vport, (struct fc_els_fpin *)payload, in lpfc_els_unsol_buffer()
8849 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
8851 cmd, did, vport->port_state); in lpfc_els_unsol_buffer()
8858 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_els_unsol_buffer()
8872 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, elsiocb, ndlp, in lpfc_els_unsol_buffer()
8893 mbox->vport = vport; in lpfc_els_unsol_buffer()
8902 if (vport && !(vport->load_flag & FC_UNLOADING)) in lpfc_els_unsol_buffer()
8903 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_els_unsol_buffer()
8926 struct lpfc_vport *vport = phba->pport; in lpfc_els_unsol_event() local
8952 vport = phba->pport; in lpfc_els_unsol_event()
8954 vport = lpfc_find_vport_by_vpid(phba, in lpfc_els_unsol_event()
8976 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
8990 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
9000 lpfc_start_fdmi(struct lpfc_vport *vport) in lpfc_start_fdmi() argument
9008 ndlp = lpfc_findnode_did(vport, FDMI_DID); in lpfc_start_fdmi()
9010 ndlp = lpfc_nlp_init(vport, FDMI_DID); in lpfc_start_fdmi()
9018 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_start_fdmi()
9021 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_start_fdmi()
9022 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_start_fdmi()
9040 lpfc_do_scr_ns_plogi(struct lpfc_hba *phba, struct lpfc_vport *vport) in lpfc_do_scr_ns_plogi() argument
9043 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_do_scr_ns_plogi()
9051 if (vport->fc_flag & FC_DISC_DELAYED) { in lpfc_do_scr_ns_plogi()
9056 mod_timer(&vport->delayed_disc_tmo, in lpfc_do_scr_ns_plogi()
9062 ndlp = lpfc_findnode_did(vport, NameServer_DID); in lpfc_do_scr_ns_plogi()
9064 ndlp = lpfc_nlp_init(vport, NameServer_DID); in lpfc_do_scr_ns_plogi()
9067 lpfc_disc_start(vport); in lpfc_do_scr_ns_plogi()
9070 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_do_scr_ns_plogi()
9071 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_do_scr_ns_plogi()
9076 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_do_scr_ns_plogi()
9079 lpfc_disc_start(vport); in lpfc_do_scr_ns_plogi()
9082 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_do_scr_ns_plogi()
9083 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_do_scr_ns_plogi()
9090 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_do_scr_ns_plogi()
9092 if (lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0)) { in lpfc_do_scr_ns_plogi()
9093 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_do_scr_ns_plogi()
9094 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_do_scr_ns_plogi()
9101 (vport->load_flag & FC_ALLOW_FDMI)) in lpfc_do_scr_ns_plogi()
9102 lpfc_start_fdmi(vport); in lpfc_do_scr_ns_plogi()
9120 struct lpfc_vport *vport = pmb->vport; in lpfc_cmpl_reg_new_vport() local
9121 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_reg_new_vport()
9127 vport->fc_flag &= ~FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_reg_new_vport()
9131 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_reg_new_vport()
9144 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_cmpl_reg_new_vport()
9146 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); in lpfc_cmpl_reg_new_vport()
9148 lpfc_can_disctmo(vport); in lpfc_cmpl_reg_new_vport()
9153 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_reg_new_vport()
9155 lpfc_init_vpi(phba, pmb, vport->vpi); in lpfc_cmpl_reg_new_vport()
9156 pmb->vport = vport; in lpfc_cmpl_reg_new_vport()
9161 lpfc_printf_vlog(vport, KERN_ERR, in lpfc_cmpl_reg_new_vport()
9173 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_reg_new_vport()
9174 lpfc_mbx_unreg_vpi(vport); in lpfc_cmpl_reg_new_vport()
9176 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_reg_new_vport()
9180 if ((vport->port_type == LPFC_PHYSICAL_PORT) && in lpfc_cmpl_reg_new_vport()
9181 !(vport->fc_flag & FC_LOGO_RCVD_DID_CHNG)) { in lpfc_cmpl_reg_new_vport()
9183 lpfc_issue_init_vfi(vport); in lpfc_cmpl_reg_new_vport()
9185 lpfc_initial_flogi(vport); in lpfc_cmpl_reg_new_vport()
9187 lpfc_initial_fdisc(vport); in lpfc_cmpl_reg_new_vport()
9193 vport->vpi_state |= LPFC_VPI_REGISTERED; in lpfc_cmpl_reg_new_vport()
9195 if (vport == phba->pport) { in lpfc_cmpl_reg_new_vport()
9197 lpfc_issue_fabric_reglogin(vport); in lpfc_cmpl_reg_new_vport()
9203 if (vport->port_state != LPFC_FDISC) in lpfc_cmpl_reg_new_vport()
9205 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
9208 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
9230 lpfc_register_new_vport(struct lpfc_hba *phba, struct lpfc_vport *vport, in lpfc_register_new_vport() argument
9233 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_register_new_vport()
9238 lpfc_reg_vpi(vport, mbox); in lpfc_register_new_vport()
9239 mbox->vport = vport; in lpfc_register_new_vport()
9250 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_register_new_vport()
9255 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_register_new_vport()
9262 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_register_new_vport()
9264 vport->fc_flag &= ~FC_VPORT_NEEDS_REG_VPI; in lpfc_register_new_vport()
9379 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_fdisc() local
9380 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_fdisc()
9390 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_fdisc()
9393 vport->fc_prevDID); in lpfc_cmpl_els_fdisc()
9399 lpfc_set_disctmo(piocb->vport); in lpfc_cmpl_els_fdisc()
9402 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_fdisc()
9404 irsp->ulpStatus, irsp->un.ulpWord[4], vport->fc_prevDID); in lpfc_cmpl_els_fdisc()
9417 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_cmpl_els_fdisc()
9423 vport->fc_flag &= ~FC_VPORT_CVL_RCVD; in lpfc_cmpl_els_fdisc()
9424 vport->fc_flag &= ~FC_VPORT_LOGO_RCVD; in lpfc_cmpl_els_fdisc()
9425 vport->fc_flag |= FC_FABRIC; in lpfc_cmpl_els_fdisc()
9426 if (vport->phba->fc_topology == LPFC_TOPOLOGY_LOOP) in lpfc_cmpl_els_fdisc()
9427 vport->fc_flag |= FC_PUBLIC_LOOP; in lpfc_cmpl_els_fdisc()
9430 vport->fc_myDID = irsp->un.ulpWord[4] & Mask_DID; in lpfc_cmpl_els_fdisc()
9431 lpfc_vport_set_state(vport, FC_VPORT_ACTIVE); in lpfc_cmpl_els_fdisc()
9436 fabric_param_changed = lpfc_check_clean_addr_bit(vport, sp); in lpfc_cmpl_els_fdisc()
9437 memcpy(&vport->fabric_portname, &sp->portName, in lpfc_cmpl_els_fdisc()
9439 memcpy(&vport->fabric_nodename, &sp->nodeName, in lpfc_cmpl_els_fdisc()
9442 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_fdisc()
9448 &vport->fc_nodes, nlp_listp) { in lpfc_cmpl_els_fdisc()
9456 lpfc_unreg_rpi(vport, np); in lpfc_cmpl_els_fdisc()
9458 lpfc_cleanup_pending_mbox(vport); in lpfc_cmpl_els_fdisc()
9461 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_els_fdisc()
9463 lpfc_mbx_unreg_vpi(vport); in lpfc_cmpl_els_fdisc()
9465 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_els_fdisc()
9467 vport->fc_flag |= FC_VPORT_NEEDS_INIT_VPI; in lpfc_cmpl_els_fdisc()
9469 vport->fc_flag |= FC_LOGO_RCVD_DID_CHNG; in lpfc_cmpl_els_fdisc()
9472 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_fdisc()
9477 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
9481 if (vport->fc_flag & FC_VPORT_NEEDS_INIT_VPI) in lpfc_cmpl_els_fdisc()
9482 lpfc_issue_init_vpi(vport); in lpfc_cmpl_els_fdisc()
9483 else if (vport->fc_flag & FC_VPORT_NEEDS_REG_VPI) in lpfc_cmpl_els_fdisc()
9484 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
9486 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_fdisc()
9489 if (vport->fc_vport && in lpfc_cmpl_els_fdisc()
9490 (vport->fc_vport->vport_state != FC_VPORT_NO_FABRIC_RSCS)) in lpfc_cmpl_els_fdisc()
9491 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_cmpl_els_fdisc()
9493 lpfc_can_disctmo(vport); in lpfc_cmpl_els_fdisc()
9520 lpfc_issue_els_fdisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_fdisc() argument
9523 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_fdisc()
9532 vport->port_state = LPFC_FDISC; in lpfc_issue_els_fdisc()
9533 vport->fc_myDID = 0; in lpfc_issue_els_fdisc()
9535 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, did, in lpfc_issue_els_fdisc()
9538 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_els_fdisc()
9539 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_issue_els_fdisc()
9560 memcpy(pcmd, &vport->phba->pport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_fdisc()
9574 memcpy(pcmd, &vport->fc_portname, 8); in lpfc_issue_els_fdisc()
9577 memcpy(pcmd, &vport->fc_nodename, 8); in lpfc_issue_els_fdisc()
9580 lpfc_set_disctmo(vport); in lpfc_issue_els_fdisc()
9585 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_fdisc()
9592 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_els_fdisc()
9593 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT, in lpfc_issue_els_fdisc()
9597 lpfc_vport_set_state(vport, FC_VPORT_INITIALIZING); in lpfc_issue_els_fdisc()
9619 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_npiv_logo() local
9622 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_npiv_logo()
9626 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_npiv_logo()
9631 vport->unreg_vpi_cmpl = VPORT_ERROR; in lpfc_cmpl_els_npiv_logo()
9637 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_npiv_logo()
9641 irsp->ulpTimeout, vport->num_disc_nodes); in lpfc_cmpl_els_npiv_logo()
9645 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_cmpl_els_npiv_logo()
9646 vport->fc_flag &= ~FC_FABRIC; in lpfc_cmpl_els_npiv_logo()
9648 lpfc_can_disctmo(vport); in lpfc_cmpl_els_npiv_logo()
9669 lpfc_issue_els_npiv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_issue_els_npiv_logo() argument
9671 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_npiv_logo()
9672 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_npiv_logo()
9678 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, 0, ndlp, ndlp->nlp_DID, in lpfc_issue_els_npiv_logo()
9688 *((uint32_t *) (pcmd)) = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_npiv_logo()
9690 memcpy(pcmd, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_npiv_logo()
9692 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_npiv_logo()
9775 lpfc_debugfs_disc_trc(iocb->vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_resume_fabric_iocbs()
9777 iocb->vport->port_state, 0, 0); in lpfc_resume_fabric_iocbs()
9942 lpfc_debugfs_disc_trc(iocb->vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_fabric_iocb()
9944 iocb->vport->port_state, 0, 0); in lpfc_issue_fabric_iocb()
9974 static void lpfc_fabric_abort_vport(struct lpfc_vport *vport) in lpfc_fabric_abort_vport() argument
9977 struct lpfc_hba *phba = vport->phba; in lpfc_fabric_abort_vport()
9984 if (piocb->vport != vport) in lpfc_fabric_abort_vport()
10066 lpfc_sli4_vport_delete_els_xri_aborted(struct lpfc_vport *vport) in lpfc_sli4_vport_delete_els_xri_aborted() argument
10068 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_vport_delete_els_xri_aborted()
10076 if (sglq_entry->ndlp && sglq_entry->ndlp->vport == vport) in lpfc_sli4_vport_delete_els_xri_aborted()
10159 lpfc_sli_abts_recover_port(struct lpfc_vport *vport, in lpfc_sli_abts_recover_port() argument
10166 shost = lpfc_shost_from_vport(vport); in lpfc_sli_abts_recover_port()
10167 phba = vport->phba; in lpfc_sli_abts_recover_port()
10179 vport->vpi, ndlp->nlp_rpi, ndlp->nlp_state, in lpfc_sli_abts_recover_port()
10189 lpfc_unreg_rpi(vport, ndlp); in lpfc_sli_abts_recover_port()