Lines Matching refs:vport
50 static void lpfc_fabric_abort_vport(struct lpfc_vport *vport);
51 static int lpfc_issue_els_fdisc(struct lpfc_vport *vport,
81 lpfc_els_chk_latt(struct lpfc_vport *vport) in lpfc_els_chk_latt() argument
83 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_chk_latt()
84 struct lpfc_hba *phba = vport->phba; in lpfc_els_chk_latt()
87 if (vport->port_state >= LPFC_VPORT_READY || in lpfc_els_chk_latt()
100 lpfc_printf_vlog(vport, KERN_ERR, LOG_DISCOVERY, in lpfc_els_chk_latt()
112 vport->fc_flag |= FC_ABORT_DISCOVERY; in lpfc_els_chk_latt()
116 lpfc_issue_clear_la(phba, vport); in lpfc_els_chk_latt()
150 lpfc_prep_els_iocb(struct lpfc_vport *vport, uint8_t expectRsp, in lpfc_prep_els_iocb() argument
155 struct lpfc_hba *phba = vport->phba; in lpfc_prep_els_iocb()
265 (vport->fc_flag & FC_PT2PT))) { in lpfc_prep_els_iocb()
268 icmd->un.elsreq64.myID = vport->fc_myDID; in lpfc_prep_els_iocb()
271 icmd->ulpContext = phba->vpi_ids[vport->vpi]; in lpfc_prep_els_iocb()
305 elsiocb->vport = vport; in lpfc_prep_els_iocb()
313 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_prep_els_iocb()
318 vport->port_state, in lpfc_prep_els_iocb()
319 vport->fc_flag); in lpfc_prep_els_iocb()
322 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_prep_els_iocb()
327 cmdSize, vport->port_state, in lpfc_prep_els_iocb()
328 vport->fc_flag); in lpfc_prep_els_iocb()
364 lpfc_issue_fabric_reglogin(struct lpfc_vport *vport) in lpfc_issue_fabric_reglogin() argument
366 struct lpfc_hba *phba = vport->phba; in lpfc_issue_fabric_reglogin()
375 ndlp = lpfc_findnode_did(vport, Fabric_DID); in lpfc_issue_fabric_reglogin()
387 vport->port_state = LPFC_FABRIC_CFG_LINK; in lpfc_issue_fabric_reglogin()
390 mbox->vport = vport; in lpfc_issue_fabric_reglogin()
403 rc = lpfc_reg_rpi(phba, vport->vpi, Fabric_DID, (uint8_t *)sp, mbox, in lpfc_issue_fabric_reglogin()
411 mbox->vport = vport; in lpfc_issue_fabric_reglogin()
437 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_fabric_reglogin()
438 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_issue_fabric_reglogin()
455 lpfc_issue_reg_vfi(struct lpfc_vport *vport) in lpfc_issue_reg_vfi() argument
457 struct lpfc_hba *phba = vport->phba; in lpfc_issue_reg_vfi()
468 !(vport->fc_flag & FC_PT2PT)) { in lpfc_issue_reg_vfi()
469 ndlp = lpfc_findnode_did(vport, Fabric_DID); in lpfc_issue_reg_vfi()
492 vport->port_state = LPFC_FABRIC_CFG_LINK; in lpfc_issue_reg_vfi()
493 memcpy(dmabuf->virt, &phba->fc_fabparam, sizeof(vport->fc_sparam)); in lpfc_issue_reg_vfi()
494 lpfc_reg_vfi(mboxq, vport, dmabuf->phys); in lpfc_issue_reg_vfi()
497 mboxq->vport = vport; in lpfc_issue_reg_vfi()
513 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_reg_vfi()
514 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_issue_reg_vfi()
531 lpfc_issue_unreg_vfi(struct lpfc_vport *vport) in lpfc_issue_unreg_vfi() argument
533 struct lpfc_hba *phba = vport->phba; in lpfc_issue_unreg_vfi()
546 lpfc_unreg_vfi(mboxq, vport); in lpfc_issue_unreg_vfi()
547 mboxq->vport = vport; in lpfc_issue_unreg_vfi()
560 shost = lpfc_shost_from_vport(vport); in lpfc_issue_unreg_vfi()
562 vport->fc_flag &= ~FC_VFI_REGISTERED; in lpfc_issue_unreg_vfi()
586 lpfc_check_clean_addr_bit(struct lpfc_vport *vport, in lpfc_check_clean_addr_bit() argument
590 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_check_clean_addr_bit()
592 if ((vport->fc_prevDID != vport->fc_myDID) || in lpfc_check_clean_addr_bit()
593 memcmp(&vport->fabric_portname, &sp->portName, in lpfc_check_clean_addr_bit()
595 memcmp(&vport->fabric_nodename, &sp->nodeName, in lpfc_check_clean_addr_bit()
610 (vport->fc_prevDID || lpfc_delay_discovery)) { in lpfc_check_clean_addr_bit()
612 vport->fc_flag |= FC_DISC_DELAYED; in lpfc_check_clean_addr_bit()
641 lpfc_cmpl_els_flogi_fabric(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_els_flogi_fabric() argument
644 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_flogi_fabric()
645 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_fabric()
651 vport->fc_flag |= FC_FABRIC; in lpfc_cmpl_els_flogi_fabric()
663 vport->fc_flag |= FC_PUBLIC_LOOP; in lpfc_cmpl_els_flogi_fabric()
667 vport->fc_myDID = irsp->un.ulpWord[4] & Mask_DID; in lpfc_cmpl_els_flogi_fabric()
682 fabric_param_changed = lpfc_check_clean_addr_bit(vport, sp); in lpfc_cmpl_els_flogi_fabric()
683 memcpy(&vport->fabric_portname, &sp->portName, in lpfc_cmpl_els_flogi_fabric()
685 memcpy(&vport->fabric_nodename, &sp->nodeName, in lpfc_cmpl_els_flogi_fabric()
691 lpfc_printf_vlog(vport, KERN_WARNING, in lpfc_cmpl_els_flogi_fabric()
702 lpfc_printf_vlog(vport, KERN_WARNING, in lpfc_cmpl_els_flogi_fabric()
722 if (vport->fc_flag & FC_VFI_REGISTERED) in lpfc_cmpl_els_flogi_fabric()
723 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi_fabric()
727 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_flogi_fabric()
733 &vport->fc_nodes, nlp_listp) { in lpfc_cmpl_els_flogi_fabric()
742 lpfc_unreg_rpi(vport, np); in lpfc_cmpl_els_flogi_fabric()
744 lpfc_cleanup_pending_mbox(vport); in lpfc_cmpl_els_flogi_fabric()
747 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_els_flogi_fabric()
748 lpfc_mbx_unreg_vpi(vport); in lpfc_cmpl_els_flogi_fabric()
750 vport->fc_flag |= FC_VPORT_NEEDS_INIT_VPI; in lpfc_cmpl_els_flogi_fabric()
759 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_els_flogi_fabric()
762 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_flogi_fabric()
767 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_els_flogi_fabric()
768 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
773 lpfc_nlp_set_state(vport, ndlp, NLP_STE_REG_LOGIN_ISSUE); in lpfc_cmpl_els_flogi_fabric()
775 vport->fc_flag & FC_VPORT_NEEDS_REG_VPI) in lpfc_cmpl_els_flogi_fabric()
776 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
778 lpfc_issue_fabric_reglogin(vport); in lpfc_cmpl_els_flogi_fabric()
781 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_els_flogi_fabric()
782 if ((!(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) && in lpfc_cmpl_els_flogi_fabric()
783 (vport->vpi_state & LPFC_VPI_REGISTERED)) { in lpfc_cmpl_els_flogi_fabric()
785 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_flogi_fabric()
786 } else if (vport->fc_flag & FC_VFI_REGISTERED) in lpfc_cmpl_els_flogi_fabric()
787 lpfc_issue_init_vpi(vport); in lpfc_cmpl_els_flogi_fabric()
789 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_flogi_fabric()
791 vport->fc_prevDID, vport->fc_myDID); in lpfc_cmpl_els_flogi_fabric()
792 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi_fabric()
819 lpfc_cmpl_els_flogi_nport(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_els_flogi_nport() argument
822 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_flogi_nport()
823 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_nport()
828 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); in lpfc_cmpl_els_flogi_nport()
833 rc = memcmp(&vport->fc_portname, &sp->portName, in lpfc_cmpl_els_flogi_nport()
834 sizeof(vport->fc_portname)); in lpfc_cmpl_els_flogi_nport()
840 vport->fc_flag |= FC_PT2PT_PLOGI; in lpfc_cmpl_els_flogi_nport()
850 vport->fc_myDID = PT2PT_LocalID; in lpfc_cmpl_els_flogi_nport()
859 mbox->vport = vport; in lpfc_cmpl_els_flogi_nport()
874 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi_nport()
881 ndlp = lpfc_findnode_did(vport, PT2PT_RemoteID); in lpfc_cmpl_els_flogi_nport()
890 lpfc_nlp_init(vport, ndlp, PT2PT_RemoteID); in lpfc_cmpl_els_flogi_nport()
892 ndlp = lpfc_enable_node(vport, ndlp, in lpfc_cmpl_els_flogi_nport()
903 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_els_flogi_nport()
918 vport->fc_flag |= FC_PT2PT; in lpfc_cmpl_els_flogi_nport()
932 vport->fc_flag &= ~FC_VFI_REGISTERED; in lpfc_cmpl_els_flogi_nport()
935 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi_nport()
939 lpfc_disc_start(vport); in lpfc_cmpl_els_flogi_nport()
972 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_flogi() local
973 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_flogi()
982 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_flogi()
990 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_flogi()
993 vport->port_state); in lpfc_cmpl_els_flogi()
1023 rc = lpfc_sli4_fcf_rr_next_proc(vport, fcf_index); in lpfc_cmpl_els_flogi()
1030 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_flogi()
1040 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_flogi()
1047 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); in lpfc_cmpl_els_flogi()
1055 vport->cfg_discovery_threads = LPFC_MAX_DISC_THREADS; in lpfc_cmpl_els_flogi()
1057 (!(vport->fc_flag & FC_VFI_REGISTERED) || in lpfc_cmpl_els_flogi()
1058 (vport->fc_prevDID != vport->fc_myDID) || in lpfc_cmpl_els_flogi()
1060 if (vport->fc_flag & FC_VFI_REGISTERED) { in lpfc_cmpl_els_flogi()
1064 vport->fc_flag &= ~FC_VFI_REGISTERED; in lpfc_cmpl_els_flogi()
1068 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_els_flogi()
1071 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi()
1078 vport->fc_flag &= ~FC_VPORT_CVL_RCVD; in lpfc_cmpl_els_flogi()
1079 vport->fc_flag &= ~FC_VPORT_LOGO_RCVD; in lpfc_cmpl_els_flogi()
1092 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_flogi()
1097 vport->port_state, vport->fc_flag); in lpfc_cmpl_els_flogi()
1099 if (vport->port_state == LPFC_FLOGI) { in lpfc_cmpl_els_flogi()
1105 rc = lpfc_cmpl_els_flogi_fabric(vport, ndlp, sp, irsp); in lpfc_cmpl_els_flogi()
1107 rc = lpfc_cmpl_els_flogi_nport(vport, ndlp, sp); in lpfc_cmpl_els_flogi()
1109 lpfc_printf_vlog(vport, KERN_ERR, in lpfc_cmpl_els_flogi()
1143 lpfc_printf_vlog(vport, KERN_INFO, LOG_FIP | in lpfc_cmpl_els_flogi()
1161 lpfc_disc_list_loopmap(vport); in lpfc_cmpl_els_flogi()
1164 lpfc_disc_start(vport); in lpfc_cmpl_els_flogi()
1172 lpfc_issue_clear_la(phba, vport); in lpfc_cmpl_els_flogi()
1201 lpfc_issue_els_flogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_flogi() argument
1204 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_flogi()
1217 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_flogi()
1229 memcpy(pcmd, &vport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_flogi()
1274 lpfc_set_disctmo(vport); in lpfc_issue_els_flogi()
1280 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_flogi()
1357 lpfc_initial_flogi(struct lpfc_vport *vport) in lpfc_initial_flogi() argument
1359 struct lpfc_hba *phba = vport->phba; in lpfc_initial_flogi()
1362 vport->port_state = LPFC_FLOGI; in lpfc_initial_flogi()
1363 lpfc_set_disctmo(vport); in lpfc_initial_flogi()
1366 ndlp = lpfc_findnode_did(vport, Fabric_DID); in lpfc_initial_flogi()
1372 lpfc_nlp_init(vport, ndlp, Fabric_DID); in lpfc_initial_flogi()
1376 lpfc_enqueue_node(vport, ndlp); in lpfc_initial_flogi()
1379 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_initial_flogi()
1384 if (lpfc_issue_els_flogi(vport, ndlp, 0)) { in lpfc_initial_flogi()
1411 lpfc_initial_fdisc(struct lpfc_vport *vport) in lpfc_initial_fdisc() argument
1413 struct lpfc_hba *phba = vport->phba; in lpfc_initial_fdisc()
1417 ndlp = lpfc_findnode_did(vport, Fabric_DID); in lpfc_initial_fdisc()
1423 lpfc_nlp_init(vport, ndlp, Fabric_DID); in lpfc_initial_fdisc()
1425 lpfc_enqueue_node(vport, ndlp); in lpfc_initial_fdisc()
1428 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_initial_fdisc()
1433 if (lpfc_issue_els_fdisc(vport, ndlp, 0)) { in lpfc_initial_fdisc()
1455 lpfc_more_plogi(struct lpfc_vport *vport) in lpfc_more_plogi() argument
1459 if (vport->num_disc_nodes) in lpfc_more_plogi()
1460 vport->num_disc_nodes--; in lpfc_more_plogi()
1463 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_more_plogi()
1466 vport->num_disc_nodes, vport->fc_plogi_cnt, in lpfc_more_plogi()
1467 vport->fc_flag, vport->port_state); in lpfc_more_plogi()
1469 if (vport->fc_flag & FC_NLP_MORE) in lpfc_more_plogi()
1471 sentplogi = lpfc_els_disc_plogi(vport); in lpfc_more_plogi()
1511 struct lpfc_vport *vport = ndlp->vport; in lpfc_plogi_confirm_nport() local
1534 new_ndlp = lpfc_findnode_wwpn(vport, &sp->portName); in lpfc_plogi_confirm_nport()
1546 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_plogi_confirm_nport()
1566 lpfc_nlp_init(vport, new_ndlp, ndlp->nlp_DID); in lpfc_plogi_confirm_nport()
1576 new_ndlp = lpfc_enable_node(vport, new_ndlp, in lpfc_plogi_confirm_nport()
1598 lpfc_unreg_rpi(vport, new_ndlp); in lpfc_plogi_confirm_nport()
1611 lpfc_nlp_set_state(vport, new_ndlp, ndlp->nlp_state); in lpfc_plogi_confirm_nport()
1618 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_plogi_confirm_nport()
1651 lpfc_drop_node(vport, ndlp); in lpfc_plogi_confirm_nport()
1654 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_plogi_confirm_nport()
1658 lpfc_unreg_rpi(vport, ndlp); in lpfc_plogi_confirm_nport()
1681 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_plogi_confirm_nport()
1716 lpfc_end_rscn(struct lpfc_vport *vport) in lpfc_end_rscn() argument
1718 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_end_rscn()
1720 if (vport->fc_flag & FC_RSCN_MODE) { in lpfc_end_rscn()
1725 if (vport->fc_rscn_id_cnt || in lpfc_end_rscn()
1726 (vport->fc_flag & FC_RSCN_DISCOVERY) != 0) in lpfc_end_rscn()
1727 lpfc_els_handle_rscn(vport); in lpfc_end_rscn()
1730 vport->fc_flag &= ~FC_RSCN_MODE; in lpfc_end_rscn()
1752 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_rrq() local
1762 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_rrq()
1767 ndlp = lpfc_findnode_did(vport, irsp->un.elsreq64.remoteID); in lpfc_cmpl_els_rrq()
1769 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_rrq()
1779 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_rrq()
1792 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_rrq()
1827 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_plogi() local
1828 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_plogi()
1838 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_plogi()
1843 ndlp = lpfc_findnode_did(vport, irsp->un.elsreq64.remoteID); in lpfc_cmpl_els_plogi()
1845 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_plogi()
1864 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_plogi()
1868 irsp->ulpTimeout, disc, vport->num_disc_nodes); in lpfc_cmpl_els_plogi()
1870 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_plogi()
1893 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_plogi()
1901 rc = lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_plogi()
1909 rc = lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_plogi()
1913 if (disc && vport->num_disc_nodes) { in lpfc_cmpl_els_plogi()
1915 lpfc_more_plogi(vport); in lpfc_cmpl_els_plogi()
1917 if (vport->num_disc_nodes == 0) { in lpfc_cmpl_els_plogi()
1919 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_cmpl_els_plogi()
1922 lpfc_can_disctmo(vport); in lpfc_cmpl_els_plogi()
1923 lpfc_end_rscn(vport); in lpfc_cmpl_els_plogi()
1954 lpfc_issue_els_plogi(struct lpfc_vport *vport, uint32_t did, uint8_t retry) in lpfc_issue_els_plogi() argument
1956 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_plogi()
1968 ndlp = lpfc_findnode_did(vport, did); in lpfc_issue_els_plogi()
1974 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, did, in lpfc_issue_els_plogi()
1985 memcpy(pcmd, &vport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_plogi()
1992 if ((vport->fc_flag & FC_FABRIC) && !(vport->fc_flag & FC_PUBLIC_LOOP)) in lpfc_issue_els_plogi()
2001 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_plogi()
2033 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_prli() local
2034 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_prli()
2049 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_prli()
2054 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_prli()
2058 irsp->ulpTimeout, vport->num_disc_nodes); in lpfc_cmpl_els_prli()
2060 vport->fc_prli_sent--; in lpfc_cmpl_els_prli()
2062 if (lpfc_els_chk_latt(vport)) in lpfc_cmpl_els_prli()
2072 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_prli()
2080 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_prli()
2084 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_prli()
2113 lpfc_issue_els_prli(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_prli() argument
2116 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_prli()
2117 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_prli()
2125 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_prli()
2151 if (vport->cfg_first_burst_size) in lpfc_issue_els_prli()
2158 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_prli()
2175 vport->fc_prli_sent++; in lpfc_issue_els_prli()
2192 lpfc_rscn_disc(struct lpfc_vport *vport) in lpfc_rscn_disc() argument
2194 lpfc_can_disctmo(vport); in lpfc_rscn_disc()
2198 if (vport->fc_npr_cnt) in lpfc_rscn_disc()
2199 if (lpfc_els_disc_plogi(vport)) in lpfc_rscn_disc()
2202 lpfc_end_rscn(vport); in lpfc_rscn_disc()
2216 lpfc_adisc_done(struct lpfc_vport *vport) in lpfc_adisc_done() argument
2218 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_adisc_done()
2219 struct lpfc_hba *phba = vport->phba; in lpfc_adisc_done()
2226 !(vport->fc_flag & FC_RSCN_MODE) && in lpfc_adisc_done()
2236 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2237 lpfc_issue_reg_vpi(phba, vport); in lpfc_adisc_done()
2244 if (vport->port_state < LPFC_VPORT_READY) { in lpfc_adisc_done()
2246 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2247 if (!(vport->fc_flag & FC_ABORT_DISCOVERY)) { in lpfc_adisc_done()
2248 vport->num_disc_nodes = 0; in lpfc_adisc_done()
2250 if (vport->fc_npr_cnt) in lpfc_adisc_done()
2251 lpfc_els_disc_plogi(vport); in lpfc_adisc_done()
2252 if (!vport->num_disc_nodes) { in lpfc_adisc_done()
2254 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_adisc_done()
2256 lpfc_can_disctmo(vport); in lpfc_adisc_done()
2257 lpfc_end_rscn(vport); in lpfc_adisc_done()
2260 vport->port_state = LPFC_VPORT_READY; in lpfc_adisc_done()
2262 lpfc_rscn_disc(vport); in lpfc_adisc_done()
2275 lpfc_more_adisc(struct lpfc_vport *vport) in lpfc_more_adisc() argument
2277 if (vport->num_disc_nodes) in lpfc_more_adisc()
2278 vport->num_disc_nodes--; in lpfc_more_adisc()
2280 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_more_adisc()
2283 vport->num_disc_nodes, vport->fc_adisc_cnt, in lpfc_more_adisc()
2284 vport->fc_flag, vport->port_state); in lpfc_more_adisc()
2286 if (vport->fc_flag & FC_NLP_MORE) { in lpfc_more_adisc()
2287 lpfc_set_disctmo(vport); in lpfc_more_adisc()
2289 lpfc_els_disc_adisc(vport); in lpfc_more_adisc()
2291 if (!vport->num_disc_nodes) in lpfc_more_adisc()
2292 lpfc_adisc_done(vport); in lpfc_more_adisc()
2316 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_adisc() local
2317 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_adisc()
2328 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_adisc()
2341 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_adisc()
2345 irsp->ulpTimeout, disc, vport->num_disc_nodes); in lpfc_cmpl_els_adisc()
2347 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_adisc()
2362 lpfc_set_disctmo(vport); in lpfc_cmpl_els_adisc()
2367 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_adisc()
2373 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_adisc()
2377 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_adisc()
2381 if (disc && vport->num_disc_nodes) in lpfc_cmpl_els_adisc()
2382 lpfc_more_adisc(vport); in lpfc_cmpl_els_adisc()
2409 lpfc_issue_els_adisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_adisc() argument
2412 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_adisc()
2413 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_adisc()
2421 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_adisc()
2436 memcpy(&ap->portName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_adisc()
2437 memcpy(&ap->nodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_issue_els_adisc()
2438 ap->DID = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_adisc()
2440 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_adisc()
2477 struct lpfc_vport *vport = ndlp->vport; in lpfc_cmpl_els_logo() local
2478 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_logo()
2494 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_logo()
2500 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_logo()
2504 irsp->ulpTimeout, vport->num_disc_nodes); in lpfc_cmpl_els_logo()
2506 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_logo()
2516 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_logo()
2530 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_logo()
2542 lpfc_disc_state_machine(vport, ndlp, cmdiocb, NLP_EVT_CMPL_LOGO); in lpfc_cmpl_els_logo()
2547 if ((vport->fc_flag & FC_PT2PT) && in lpfc_cmpl_els_logo()
2548 !(vport->fc_flag & FC_PT2PT_PLOGI)) { in lpfc_cmpl_els_logo()
2554 mbox->vport = vport; in lpfc_cmpl_els_logo()
2569 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_cmpl_els_logo()
2574 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_logo()
2579 vport->num_disc_nodes); in lpfc_cmpl_els_logo()
2580 lpfc_disc_start(vport); in lpfc_cmpl_els_logo()
2606 lpfc_issue_els_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_logo() argument
2609 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_logo()
2610 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_logo()
2625 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_logo()
2636 *((uint32_t *) (pcmd)) = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_logo()
2638 memcpy(pcmd, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_logo()
2640 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_logo()
2655 if (lpfc_unreg_rpi(vport, ndlp)) { in lpfc_issue_els_logo()
2698 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_cmd() local
2703 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_cmd()
2708 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_cmd()
2713 lpfc_els_chk_latt(vport); in lpfc_cmpl_els_cmd()
2741 lpfc_issue_els_scr(struct lpfc_vport *vport, uint32_t nportid, uint8_t retry) in lpfc_issue_els_scr() argument
2743 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_scr()
2754 ndlp = lpfc_findnode_did(vport, nportid); in lpfc_issue_els_scr()
2759 lpfc_nlp_init(vport, ndlp, nportid); in lpfc_issue_els_scr()
2760 lpfc_enqueue_node(vport, ndlp); in lpfc_issue_els_scr()
2762 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_issue_els_scr()
2767 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_scr()
2788 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_scr()
2835 lpfc_issue_els_farpr(struct lpfc_vport *vport, uint32_t nportid, uint8_t retry) in lpfc_issue_els_farpr() argument
2837 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_farpr()
2851 ndlp = lpfc_findnode_did(vport, nportid); in lpfc_issue_els_farpr()
2856 lpfc_nlp_init(vport, ndlp, nportid); in lpfc_issue_els_farpr()
2857 lpfc_enqueue_node(vport, ndlp); in lpfc_issue_els_farpr()
2859 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_issue_els_farpr()
2864 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_farpr()
2885 *lp++ = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_farpr()
2889 memcpy(&fp->RportName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_farpr()
2890 memcpy(&fp->RnodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_issue_els_farpr()
2891 ondlp = lpfc_findnode_did(vport, nportid); in lpfc_issue_els_farpr()
2899 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_farpr()
2935 lpfc_cancel_retry_delay_tmo(struct lpfc_vport *vport, struct lpfc_nodelist *nlp) in lpfc_cancel_retry_delay_tmo() argument
2937 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cancel_retry_delay_tmo()
2957 if (vport->num_disc_nodes) { in lpfc_cancel_retry_delay_tmo()
2958 if (vport->port_state < LPFC_VPORT_READY) { in lpfc_cancel_retry_delay_tmo()
2960 lpfc_more_adisc(vport); in lpfc_cancel_retry_delay_tmo()
2963 lpfc_more_plogi(vport); in lpfc_cancel_retry_delay_tmo()
2964 if (vport->num_disc_nodes == 0) { in lpfc_cancel_retry_delay_tmo()
2966 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_cancel_retry_delay_tmo()
2968 lpfc_can_disctmo(vport); in lpfc_cancel_retry_delay_tmo()
2969 lpfc_end_rscn(vport); in lpfc_cancel_retry_delay_tmo()
2995 struct lpfc_vport *vport = ndlp->vport; in lpfc_els_retry_delay() local
2996 struct lpfc_hba *phba = vport->phba; in lpfc_els_retry_delay()
3031 struct lpfc_vport *vport = ndlp->vport; in lpfc_els_retry_delay_handler() local
3032 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_retry_delay_handler()
3057 lpfc_issue_els_flogi(vport, ndlp, retry); in lpfc_els_retry_delay_handler()
3060 if (!lpfc_issue_els_plogi(vport, ndlp->nlp_DID, retry)) { in lpfc_els_retry_delay_handler()
3062 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_els_retry_delay_handler()
3066 if (!lpfc_issue_els_adisc(vport, ndlp, retry)) { in lpfc_els_retry_delay_handler()
3068 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_els_retry_delay_handler()
3072 if (!lpfc_issue_els_prli(vport, ndlp, retry)) { in lpfc_els_retry_delay_handler()
3074 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PRLI_ISSUE); in lpfc_els_retry_delay_handler()
3078 if (!lpfc_issue_els_logo(vport, ndlp, retry)) { in lpfc_els_retry_delay_handler()
3080 lpfc_nlp_set_state(vport, ndlp, NLP_STE_LOGO_ISSUE); in lpfc_els_retry_delay_handler()
3084 if (!(vport->fc_flag & FC_VPORT_NEEDS_INIT_VPI)) in lpfc_els_retry_delay_handler()
3085 lpfc_issue_els_fdisc(vport, ndlp, retry); in lpfc_els_retry_delay_handler()
3116 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_els_retry() local
3117 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_retry()
3143 ndlp = lpfc_findnode_did(vport, did); in lpfc_els_retry()
3149 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_els_retry()
3184 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_retry()
3271 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_retry()
3275 lpfc_vport_set_state(vport, in lpfc_els_retry()
3312 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_retry()
3316 lpfc_vport_set_state(vport, in lpfc_els_retry()
3352 maxretry = vport->cfg_devloss_tmo; in lpfc_els_retry()
3362 if ((vport->load_flag & FC_UNLOADING) != 0) in lpfc_els_retry()
3369 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_retry()
3379 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_retry()
3391 if (timer_pending(&vport->fc_disctmo) || in lpfc_els_retry()
3392 (vport->fc_flag & FC_RSCN_MODE)) in lpfc_els_retry()
3393 lpfc_set_disctmo(vport); in lpfc_els_retry()
3410 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_retry()
3413 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_retry()
3421 lpfc_issue_els_flogi(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
3424 lpfc_issue_els_fdisc(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
3429 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_retry()
3432 lpfc_issue_els_plogi(vport, did, cmdiocb->retry); in lpfc_els_retry()
3436 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_els_retry()
3437 lpfc_issue_els_adisc(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
3441 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PRLI_ISSUE); in lpfc_els_retry()
3442 lpfc_issue_els_prli(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
3446 lpfc_nlp_set_state(vport, ndlp, NLP_STE_LOGO_ISSUE); in lpfc_els_retry()
3447 lpfc_issue_els_logo(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
3453 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_retry()
3460 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_retry()
3636 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_logo_acc() local
3640 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_cmpl_els_logo_acc()
3644 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_logo_acc()
3656 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_els_logo_acc()
3707 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE, in lpfc_mbx_cmpl_dflt_rpi()
3720 lpfc_drop_node(ndlp->vport, ndlp); in lpfc_mbx_cmpl_dflt_rpi()
3748 struct lpfc_vport *vport = ndlp ? ndlp->vport : NULL; in lpfc_cmpl_els_rsp() local
3749 struct Scsi_Host *shost = vport ? lpfc_shost_from_vport(vport) : NULL; in lpfc_cmpl_els_rsp()
3775 if (!ndlp || !NLP_CHK_NODE_ACT(ndlp) || lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_rsp()
3797 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_cmpl_els_rsp()
3802 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_rsp()
3812 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_els_rsp()
3817 mbox->vport = vport; in lpfc_cmpl_els_rsp()
3825 lpfc_nlp_set_state(vport, ndlp, in lpfc_cmpl_els_rsp()
3838 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_rsp()
3924 lpfc_els_rsp_acc(struct lpfc_vport *vport, uint32_t flag, in lpfc_els_rsp_acc() argument
3928 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_rsp_acc()
3929 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_acc()
3945 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, in lpfc_els_rsp_acc()
3961 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_acc()
3967 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, in lpfc_els_rsp_acc()
3982 memcpy(pcmd, &vport->fc_sparam, sizeof(struct serv_parm)); in lpfc_els_rsp_acc()
3984 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_acc()
3990 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, in lpfc_els_rsp_acc()
4006 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_acc()
4014 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_acc()
4020 ndlp->nlp_rpi, vport->fc_flag); in lpfc_els_rsp_acc()
4062 lpfc_els_rsp_reject(struct lpfc_vport *vport, uint32_t rejectError, in lpfc_els_rsp_reject() argument
4066 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_reject()
4077 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_reject()
4096 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_reject()
4103 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_reject()
4138 lpfc_els_rsp_adisc_acc(struct lpfc_vport *vport, struct lpfc_iocbq *oldiocb, in lpfc_els_rsp_adisc_acc() argument
4141 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_adisc_acc()
4150 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_adisc_acc()
4161 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_adisc_acc()
4174 memcpy(&ap->portName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_els_rsp_adisc_acc()
4175 memcpy(&ap->nodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_els_rsp_adisc_acc()
4176 ap->DID = be32_to_cpu(vport->fc_myDID); in lpfc_els_rsp_adisc_acc()
4178 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_adisc_acc()
4212 lpfc_els_rsp_prli_acc(struct lpfc_vport *vport, struct lpfc_iocbq *oldiocb, in lpfc_els_rsp_prli_acc() argument
4215 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_prli_acc()
4229 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_prli_acc()
4240 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_prli_acc()
4275 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_prli_acc()
4317 lpfc_els_rsp_rnid_acc(struct lpfc_vport *vport, uint8_t format, in lpfc_els_rsp_rnid_acc() argument
4320 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rnid_acc()
4335 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_rnid_acc()
4346 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rnid_acc()
4357 memcpy(&rn->portName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_els_rsp_rnid_acc()
4358 memcpy(&rn->nodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_els_rsp_rnid_acc()
4366 &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_els_rsp_rnid_acc()
4377 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_rnid_acc()
4401 lpfc_els_clear_rrq(struct lpfc_vport *vport, in lpfc_els_clear_rrq() argument
4404 struct lpfc_hba *phba = vport->phba; in lpfc_els_clear_rrq()
4418 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_clear_rrq()
4426 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_clear_rrq()
4429 if (vport->fc_myDID == be32_to_cpu(bf_get(rrq_did, rrq))) in lpfc_els_clear_rrq()
4433 prrq = lpfc_get_active_rrq(vport, xri, ndlp->nlp_DID); in lpfc_els_clear_rrq()
4451 lpfc_els_rsp_echo_acc(struct lpfc_vport *vport, uint8_t *data, in lpfc_els_rsp_echo_acc() argument
4454 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_echo_acc()
4469 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_echo_acc()
4478 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_echo_acc()
4486 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_echo_acc()
4521 lpfc_els_disc_adisc(struct lpfc_vport *vport) in lpfc_els_disc_adisc() argument
4523 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_disc_adisc()
4528 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_els_disc_adisc()
4538 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_els_disc_adisc()
4539 lpfc_issue_els_adisc(vport, ndlp, 0); in lpfc_els_disc_adisc()
4541 vport->num_disc_nodes++; in lpfc_els_disc_adisc()
4542 if (vport->num_disc_nodes >= in lpfc_els_disc_adisc()
4543 vport->cfg_discovery_threads) { in lpfc_els_disc_adisc()
4545 vport->fc_flag |= FC_NLP_MORE; in lpfc_els_disc_adisc()
4553 vport->fc_flag &= ~FC_NLP_MORE; in lpfc_els_disc_adisc()
4579 lpfc_els_disc_plogi(struct lpfc_vport *vport) in lpfc_els_disc_plogi() argument
4581 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_disc_plogi()
4586 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_els_disc_plogi()
4594 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_els_disc_plogi()
4595 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_els_disc_plogi()
4597 vport->num_disc_nodes++; in lpfc_els_disc_plogi()
4598 if (vport->num_disc_nodes >= in lpfc_els_disc_plogi()
4599 vport->cfg_discovery_threads) { in lpfc_els_disc_plogi()
4601 vport->fc_flag |= FC_NLP_MORE; in lpfc_els_disc_plogi()
4608 lpfc_set_disctmo(vport); in lpfc_els_disc_plogi()
4612 vport->fc_flag &= ~FC_NLP_MORE; in lpfc_els_disc_plogi()
4628 lpfc_els_flush_rscn(struct lpfc_vport *vport) in lpfc_els_flush_rscn() argument
4630 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_flush_rscn()
4631 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_rscn()
4635 if (vport->fc_rscn_flush) { in lpfc_els_flush_rscn()
4641 vport->fc_rscn_flush = 1; in lpfc_els_flush_rscn()
4644 for (i = 0; i < vport->fc_rscn_id_cnt; i++) { in lpfc_els_flush_rscn()
4645 lpfc_in_buf_free(phba, vport->fc_rscn_id_list[i]); in lpfc_els_flush_rscn()
4646 vport->fc_rscn_id_list[i] = NULL; in lpfc_els_flush_rscn()
4649 vport->fc_rscn_id_cnt = 0; in lpfc_els_flush_rscn()
4650 vport->fc_flag &= ~(FC_RSCN_MODE | FC_RSCN_DISCOVERY); in lpfc_els_flush_rscn()
4652 lpfc_can_disctmo(vport); in lpfc_els_flush_rscn()
4654 vport->fc_rscn_flush = 0; in lpfc_els_flush_rscn()
4670 lpfc_rscn_payload_check(struct lpfc_vport *vport, uint32_t did) in lpfc_rscn_payload_check() argument
4676 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_rscn_payload_check()
4685 if (vport->fc_flag & FC_RSCN_DISCOVERY) in lpfc_rscn_payload_check()
4689 if (vport->fc_rscn_flush) { in lpfc_rscn_payload_check()
4695 vport->fc_rscn_flush = 1; in lpfc_rscn_payload_check()
4697 for (i = 0; i < vport->fc_rscn_id_cnt; i++) { in lpfc_rscn_payload_check()
4698 lp = vport->fc_rscn_id_list[i]->virt; in lpfc_rscn_payload_check()
4726 vport->fc_rscn_flush = 0; in lpfc_rscn_payload_check()
4730 vport->fc_rscn_flush = 0; in lpfc_rscn_payload_check()
4746 lpfc_rscn_recovery_check(struct lpfc_vport *vport) in lpfc_rscn_recovery_check() argument
4751 list_for_each_entry(ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_rscn_recovery_check()
4754 !lpfc_rscn_payload_check(vport, ndlp->nlp_DID)) in lpfc_rscn_recovery_check()
4756 lpfc_disc_state_machine(vport, ndlp, NULL, in lpfc_rscn_recovery_check()
4758 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_rscn_recovery_check()
4772 lpfc_send_rscn_event(struct lpfc_vport *vport, in lpfc_send_rscn_event() argument
4776 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_send_rscn_event()
4788 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_send_rscn_event()
4829 lpfc_els_rcv_rscn(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rscn() argument
4832 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_rcv_rscn()
4833 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rscn()
4849 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
4851 vport->fc_flag, payload_len, *lp, in lpfc_els_rcv_rscn()
4852 vport->fc_rscn_id_cnt); in lpfc_els_rcv_rscn()
4855 lpfc_send_rscn_event(vport, cmdiocb); in lpfc_els_rcv_rscn()
4864 if (vport->port_state <= LPFC_NS_QRY) { in lpfc_els_rcv_rscn()
4865 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
4867 ndlp->nlp_DID, vport->port_state, ndlp->nlp_flag); in lpfc_els_rcv_rscn()
4869 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
4877 !(vport->cfg_peer_port_login)) { in lpfc_els_rcv_rscn()
4890 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
4893 vport->fc_flag, payload_len, in lpfc_els_rcv_rscn()
4894 *lp, vport->fc_rscn_id_cnt); in lpfc_els_rcv_rscn()
4895 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
4897 ndlp->nlp_DID, vport->port_state, in lpfc_els_rcv_rscn()
4900 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, in lpfc_els_rcv_rscn()
4907 if (vport->fc_rscn_flush) { in lpfc_els_rcv_rscn()
4909 vport->fc_flag |= FC_RSCN_DISCOVERY; in lpfc_els_rcv_rscn()
4912 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
4916 vport->fc_rscn_flush = 1; in lpfc_els_rcv_rscn()
4919 rscn_cnt = vport->fc_rscn_id_cnt; in lpfc_els_rcv_rscn()
4923 if (vport->fc_flag & (FC_RSCN_MODE | FC_NDISC_ACTIVE)) { in lpfc_els_rcv_rscn()
4924 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
4926 ndlp->nlp_DID, vport->port_state, ndlp->nlp_flag); in lpfc_els_rcv_rscn()
4929 vport->fc_flag |= FC_RSCN_DEFERRED; in lpfc_els_rcv_rscn()
4931 !(vport->fc_flag & FC_RSCN_DISCOVERY)) { in lpfc_els_rcv_rscn()
4932 vport->fc_flag |= FC_RSCN_MODE; in lpfc_els_rcv_rscn()
4935 cmd = vport->fc_rscn_id_list[rscn_cnt-1]->virt; in lpfc_els_rcv_rscn()
4945 vport->fc_rscn_id_list[rscn_cnt] = pcmd; in lpfc_els_rcv_rscn()
4946 vport->fc_rscn_id_cnt++; in lpfc_els_rcv_rscn()
4953 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
4956 vport->fc_rscn_id_cnt, vport->fc_flag, in lpfc_els_rcv_rscn()
4957 vport->port_state); in lpfc_els_rcv_rscn()
4959 vport->fc_flag |= FC_RSCN_DISCOVERY; in lpfc_els_rcv_rscn()
4962 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
4965 vport->fc_rscn_id_cnt, vport->fc_flag, in lpfc_els_rcv_rscn()
4966 vport->port_state); in lpfc_els_rcv_rscn()
4969 vport->fc_rscn_flush = 0; in lpfc_els_rcv_rscn()
4971 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
4973 lpfc_rscn_recovery_check(vport); in lpfc_els_rcv_rscn()
4975 vport->fc_flag &= ~FC_RSCN_DEFERRED; in lpfc_els_rcv_rscn()
4979 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
4981 ndlp->nlp_DID, vport->port_state, ndlp->nlp_flag); in lpfc_els_rcv_rscn()
4984 vport->fc_flag |= FC_RSCN_MODE; in lpfc_els_rcv_rscn()
4986 vport->fc_rscn_id_list[vport->fc_rscn_id_cnt++] = pcmd; in lpfc_els_rcv_rscn()
4988 vport->fc_rscn_flush = 0; in lpfc_els_rcv_rscn()
4994 lpfc_set_disctmo(vport); in lpfc_els_rcv_rscn()
4996 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
4998 lpfc_rscn_recovery_check(vport); in lpfc_els_rcv_rscn()
4999 return lpfc_els_handle_rscn(vport); in lpfc_els_rcv_rscn()
5019 lpfc_els_handle_rscn(struct lpfc_vport *vport) in lpfc_els_handle_rscn() argument
5022 struct lpfc_hba *phba = vport->phba; in lpfc_els_handle_rscn()
5025 if (vport->load_flag & FC_UNLOADING) { in lpfc_els_handle_rscn()
5026 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
5031 lpfc_set_disctmo(vport); in lpfc_els_handle_rscn()
5034 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_handle_rscn()
5036 vport->fc_flag, 0, vport->fc_rscn_id_cnt, in lpfc_els_handle_rscn()
5037 vport->port_state); in lpfc_els_handle_rscn()
5040 vport->fc_ns_retry = 0; in lpfc_els_handle_rscn()
5041 vport->num_disc_nodes = 0; in lpfc_els_handle_rscn()
5043 ndlp = lpfc_findnode_did(vport, NameServer_DID); in lpfc_els_handle_rscn()
5047 if (lpfc_ns_cmd(vport, SLI_CTNS_GID_FT, 0, 0) == 0) in lpfc_els_handle_rscn()
5054 ndlp = lpfc_findnode_did(vport, NameServer_DID); in lpfc_els_handle_rscn()
5061 ndlp = lpfc_enable_node(vport, ndlp, in lpfc_els_handle_rscn()
5064 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
5071 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
5074 lpfc_nlp_init(vport, ndlp, NameServer_DID); in lpfc_els_handle_rscn()
5076 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_els_handle_rscn()
5079 lpfc_issue_els_plogi(vport, NameServer_DID, 0); in lpfc_els_handle_rscn()
5086 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
5116 lpfc_els_rcv_flogi(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_flogi() argument
5119 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_rcv_flogi()
5120 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_flogi()
5137 lpfc_set_disctmo(vport); in lpfc_els_rcv_flogi()
5145 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_rcv_flogi()
5152 if ((lpfc_check_sparm(vport, ndlp, sp, CLASS3, 1))) { in lpfc_els_rcv_flogi()
5157 rc = memcmp(&vport->fc_portname, &sp->portName, in lpfc_els_rcv_flogi()
5172 mbox->vport = vport; in lpfc_els_rcv_flogi()
5188 vport->fc_flag |= FC_PT2PT_PLOGI; in lpfc_els_rcv_flogi()
5196 vport->fc_myDID = PT2PT_LocalID; in lpfc_els_rcv_flogi()
5198 vport->fc_myDID = PT2PT_RemoteID; in lpfc_els_rcv_flogi()
5205 fc_flag = vport->fc_flag; in lpfc_els_rcv_flogi()
5206 port_state = vport->port_state; in lpfc_els_rcv_flogi()
5207 vport->fc_flag |= FC_PT2PT; in lpfc_els_rcv_flogi()
5208 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); in lpfc_els_rcv_flogi()
5210 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_flogi()
5213 port_state, vport->port_state, in lpfc_els_rcv_flogi()
5214 fc_flag, vport->fc_flag); in lpfc_els_rcv_flogi()
5221 did = vport->fc_myDID; in lpfc_els_rcv_flogi()
5222 vport->fc_myDID = Fabric_DID; in lpfc_els_rcv_flogi()
5236 did = vport->fc_myDID; in lpfc_els_rcv_flogi()
5237 vport->fc_myDID = Fabric_DID; in lpfc_els_rcv_flogi()
5239 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_els_rcv_flogi()
5243 vport->fc_myDID = did; in lpfc_els_rcv_flogi()
5249 lpfc_els_rsp_acc(vport, ELS_CMD_PLOGI, cmdiocb, ndlp, NULL); in lpfc_els_rcv_flogi()
5252 vport->fc_myDID = did; in lpfc_els_rcv_flogi()
5254 if (!(vport->fc_flag & FC_PT2PT_PLOGI)) { in lpfc_els_rcv_flogi()
5263 mbox->vport = vport; in lpfc_els_rcv_flogi()
5293 lpfc_els_rcv_rnid(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rnid() argument
5316 lpfc_els_rsp_rnid_acc(vport, rn->Format, cmdiocb, ndlp); in lpfc_els_rcv_rnid()
5324 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_els_rcv_rnid()
5340 lpfc_els_rcv_echo(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_echo() argument
5350 lpfc_els_rsp_echo_acc(vport, pcmd, cmdiocb, ndlp); in lpfc_els_rcv_echo()
5368 lpfc_els_rcv_lirr(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_lirr() argument
5378 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_lirr()
5399 lpfc_els_rcv_rrq(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rrq() argument
5402 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rrq()
5403 if (vport->phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_rcv_rrq()
5404 lpfc_els_clear_rrq(vport, cmdiocb, ndlp); in lpfc_els_rcv_rrq()
5482 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rls_acc()
5577 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rps_acc()
5609 lpfc_els_rcv_rls(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rls() argument
5612 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rls()
5631 mbox->vport = vport; in lpfc_els_rcv_rls()
5649 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rls()
5675 lpfc_els_rcv_rtv(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rtv() argument
5678 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rtv()
5717 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_rtv()
5737 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rtv()
5759 lpfc_els_rcv_rps(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rps() argument
5762 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rps()
5782 ((flag == 2) && (memcmp(&rps->un.portName, &vport->fc_portname, in lpfc_els_rcv_rps()
5794 mbox->vport = vport; in lpfc_els_rcv_rps()
5814 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rps()
5832 lpfc_issue_els_rrq(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_rrq() argument
5835 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rrq()
5851 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, 0, ndlp, did, in lpfc_issue_els_rrq()
5866 bf_set(rrq_did, els_rrq, vport->fc_myDID); in lpfc_issue_els_rrq()
5871 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_rrq()
5900 struct lpfc_nodelist *ndlp = lpfc_findnode_did(rrq->vport, in lpfc_send_rrq()
5903 return lpfc_issue_els_rrq(rrq->vport, ndlp, in lpfc_send_rrq()
5929 lpfc_els_rsp_rpl_acc(struct lpfc_vport *vport, uint16_t cmdsize, in lpfc_els_rsp_rpl_acc() argument
5932 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rpl_acc()
5938 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_rpl_acc()
5959 rpl_rsp.port_num_blk.portID = be32_to_cpu(vport->fc_myDID); in lpfc_els_rsp_rpl_acc()
5960 memcpy(&rpl_rsp.port_num_blk.portName, &vport->fc_portname, in lpfc_els_rsp_rpl_acc()
5964 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rpl_acc()
5998 lpfc_els_rcv_rpl(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rpl() argument
6015 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_els_rcv_rpl()
6034 lpfc_els_rsp_rpl_acc(vport, cmdsize, cmdiocb, ndlp); in lpfc_els_rcv_rpl()
6064 lpfc_els_rcv_farp(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_farp() argument
6081 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_farp()
6091 if (memcmp(&fp->RportName, &vport->fc_portname, in lpfc_els_rcv_farp()
6098 if (memcmp(&fp->RnodeName, &vport->fc_nodename, in lpfc_els_rcv_farp()
6109 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_rcv_farp()
6111 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_els_rcv_farp()
6116 lpfc_issue_els_farpr(vport, did, 0); in lpfc_els_rcv_farp()
6137 lpfc_els_rcv_farpr(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_farpr() argument
6152 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_farpr()
6155 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_farpr()
6180 lpfc_els_rcv_fan(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_fan() argument
6183 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_fan()
6187 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, "0265 FAN received\n"); in lpfc_els_rcv_fan()
6191 if ((vport == phba->pport) && in lpfc_els_rcv_fan()
6192 (vport->port_state == LPFC_LOCAL_CFG_LINK)) { in lpfc_els_rcv_fan()
6198 lpfc_issue_init_vfi(vport); in lpfc_els_rcv_fan()
6201 vport->fc_myDID = vport->fc_prevDID; in lpfc_els_rcv_fan()
6203 lpfc_issue_fabric_reglogin(vport); in lpfc_els_rcv_fan()
6205 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_fan()
6207 vport->fc_prevDID, vport->fc_myDID); in lpfc_els_rcv_fan()
6208 lpfc_issue_reg_vfi(vport); in lpfc_els_rcv_fan()
6228 struct lpfc_vport *vport = (struct lpfc_vport *) ptr; in lpfc_els_timeout() local
6229 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout()
6233 spin_lock_irqsave(&vport->work_port_lock, iflag); in lpfc_els_timeout()
6234 tmo_posted = vport->work_port_events & WORKER_ELS_TMO; in lpfc_els_timeout()
6235 if ((!tmo_posted) && (!(vport->load_flag & FC_UNLOADING))) in lpfc_els_timeout()
6236 vport->work_port_events |= WORKER_ELS_TMO; in lpfc_els_timeout()
6237 spin_unlock_irqrestore(&vport->work_port_lock, iflag); in lpfc_els_timeout()
6239 if ((!tmo_posted) && (!(vport->load_flag & FC_UNLOADING))) in lpfc_els_timeout()
6255 lpfc_els_timeout_handler(struct lpfc_vport *vport) in lpfc_els_timeout_handler() argument
6257 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout_handler()
6292 if (piocb->vport != vport) in lpfc_els_timeout_handler()
6317 ndlp = __lpfc_findnode_rpi(vport, cmd->ulpContext); in lpfc_els_timeout_handler()
6329 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_timeout_handler()
6341 mod_timer(&vport->els_tmofunc, in lpfc_els_timeout_handler()
6366 lpfc_els_flush_cmd(struct lpfc_vport *vport) in lpfc_els_flush_cmd() argument
6369 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_cmd()
6374 lpfc_fabric_abort_vport(vport); in lpfc_els_flush_cmd()
6389 if (piocb->vport != vport) in lpfc_els_flush_cmd()
6404 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_flush_cmd()
6426 if (piocb->vport != vport) in lpfc_els_flush_cmd()
6463 struct lpfc_vport *vport; in lpfc_els_flush_all_cmd() local
6464 list_for_each_entry(vport, &phba->port_list, listentry) in lpfc_els_flush_all_cmd()
6465 lpfc_els_flush_cmd(vport); in lpfc_els_flush_all_cmd()
6484 struct lpfc_vport *vport = cmdiocbp->vport; in lpfc_send_els_failure_event() local
6485 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_send_els_failure_event()
6547 lpfc_send_els_event(struct lpfc_vport *vport, in lpfc_send_els_event() argument
6553 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_send_els_event()
6558 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_send_els_event()
6568 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_send_els_event()
6633 struct lpfc_vport *vport, struct lpfc_iocbq *elsiocb) in lpfc_els_unsol_buffer() argument
6643 if (!vport || !(elsiocb->context2)) in lpfc_els_unsol_buffer()
6654 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6661 if (lpfc_els_chk_latt(vport)) in lpfc_els_unsol_buffer()
6665 if (vport->load_flag & FC_UNLOADING) in lpfc_els_unsol_buffer()
6669 if ((vport->fc_flag & FC_DISC_DELAYED) && in lpfc_els_unsol_buffer()
6673 ndlp = lpfc_findnode_did(vport, did); in lpfc_els_unsol_buffer()
6680 lpfc_nlp_init(vport, ndlp, did); in lpfc_els_unsol_buffer()
6681 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_els_unsol_buffer()
6686 ndlp = lpfc_enable_node(vport, ndlp, in lpfc_els_unsol_buffer()
6690 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_els_unsol_buffer()
6699 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_els_unsol_buffer()
6713 elsiocb->vport = vport; in lpfc_els_unsol_buffer()
6719 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_unsol_buffer()
6722 cmd, did, vport->port_state, vport->fc_flag, in lpfc_els_unsol_buffer()
6723 vport->fc_myDID, vport->fc_prevDID); in lpfc_els_unsol_buffer()
6726 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6728 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6734 vport->fc_prevDID = vport->fc_myDID; in lpfc_els_unsol_buffer()
6739 vport->fc_myDID = elsiocb->iocb.un.rcvels.parmRo; in lpfc_els_unsol_buffer()
6740 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_unsol_buffer()
6742 "%x\n", vport->fc_myDID, in lpfc_els_unsol_buffer()
6743 vport->fc_prevDID); in lpfc_els_unsol_buffer()
6746 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
6749 if (vport->fc_flag & FC_DISC_DELAYED) { in lpfc_els_unsol_buffer()
6754 shost = lpfc_shost_from_vport(vport); in lpfc_els_unsol_buffer()
6755 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
6768 vport->fc_myDID != vport->fc_prevDID)) { in lpfc_els_unsol_buffer()
6771 vport->fc_flag &= ~FC_VFI_REGISTERED; in lpfc_els_unsol_buffer()
6774 lpfc_issue_reg_vfi(vport); in lpfc_els_unsol_buffer()
6782 lpfc_disc_state_machine(vport, ndlp, elsiocb, in lpfc_els_unsol_buffer()
6787 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6789 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6792 lpfc_els_rcv_flogi(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6797 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6799 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6802 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
6803 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
6808 lpfc_disc_state_machine(vport, ndlp, elsiocb, NLP_EVT_RCV_LOGO); in lpfc_els_unsol_buffer()
6811 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6813 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6816 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
6817 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
6822 lpfc_disc_state_machine(vport, ndlp, elsiocb, NLP_EVT_RCV_PRLO); in lpfc_els_unsol_buffer()
6826 lpfc_els_rcv_rscn(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6831 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6833 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6835 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
6837 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
6842 lpfc_disc_state_machine(vport, ndlp, elsiocb, in lpfc_els_unsol_buffer()
6846 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6848 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6851 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
6856 lpfc_disc_state_machine(vport, ndlp, elsiocb, in lpfc_els_unsol_buffer()
6860 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6862 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6865 lpfc_els_rcv_farpr(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6868 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6870 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6873 lpfc_els_rcv_farp(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6876 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6878 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6881 lpfc_els_rcv_fan(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6884 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6886 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6889 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
6894 lpfc_disc_state_machine(vport, ndlp, elsiocb, NLP_EVT_RCV_PRLI); in lpfc_els_unsol_buffer()
6897 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6899 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6902 lpfc_els_rcv_lirr(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6907 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6909 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6912 lpfc_els_rcv_rls(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6917 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6919 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6922 lpfc_els_rcv_rps(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6927 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6929 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6932 lpfc_els_rcv_rpl(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6937 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6939 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6942 lpfc_els_rcv_rnid(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6947 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6949 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6951 lpfc_els_rcv_rtv(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6956 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6958 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6961 lpfc_els_rcv_rrq(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6966 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6968 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
6971 lpfc_els_rcv_echo(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
6981 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
6983 cmd, did, vport->port_state); in lpfc_els_unsol_buffer()
6990 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_unsol_buffer()
7003 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, elsiocb, ndlp, in lpfc_els_unsol_buffer()
7012 if (vport && !(vport->load_flag & FC_UNLOADING)) in lpfc_els_unsol_buffer()
7013 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_unsol_buffer()
7036 struct lpfc_vport *vport = phba->pport; in lpfc_els_unsol_event() local
7062 vport = phba->pport; in lpfc_els_unsol_event()
7064 vport = lpfc_find_vport_by_vpid(phba, in lpfc_els_unsol_event()
7086 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
7100 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
7123 lpfc_do_scr_ns_plogi(struct lpfc_hba *phba, struct lpfc_vport *vport) in lpfc_do_scr_ns_plogi() argument
7126 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_do_scr_ns_plogi()
7134 if (vport->fc_flag & FC_DISC_DELAYED) { in lpfc_do_scr_ns_plogi()
7139 mod_timer(&vport->delayed_disc_tmo, in lpfc_do_scr_ns_plogi()
7145 ndlp = lpfc_findnode_did(vport, NameServer_DID); in lpfc_do_scr_ns_plogi()
7150 lpfc_disc_start(vport); in lpfc_do_scr_ns_plogi()
7153 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_do_scr_ns_plogi()
7154 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_do_scr_ns_plogi()
7158 lpfc_nlp_init(vport, ndlp, NameServer_DID); in lpfc_do_scr_ns_plogi()
7160 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_do_scr_ns_plogi()
7163 lpfc_disc_start(vport); in lpfc_do_scr_ns_plogi()
7166 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_do_scr_ns_plogi()
7167 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_do_scr_ns_plogi()
7174 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_do_scr_ns_plogi()
7176 if (lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0)) { in lpfc_do_scr_ns_plogi()
7177 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_do_scr_ns_plogi()
7178 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_do_scr_ns_plogi()
7183 if (vport->cfg_fdmi_on & LPFC_FDMI_SUPPORT) { in lpfc_do_scr_ns_plogi()
7188 ndlp_fdmi = lpfc_findnode_did(vport, FDMI_DID); in lpfc_do_scr_ns_plogi()
7193 lpfc_nlp_init(vport, ndlp_fdmi, FDMI_DID); in lpfc_do_scr_ns_plogi()
7199 ndlp_fdmi = lpfc_enable_node(vport, in lpfc_do_scr_ns_plogi()
7204 lpfc_nlp_set_state(vport, ndlp_fdmi, in lpfc_do_scr_ns_plogi()
7206 lpfc_issue_els_plogi(vport, ndlp_fdmi->nlp_DID, 0); in lpfc_do_scr_ns_plogi()
7226 struct lpfc_vport *vport = pmb->vport; in lpfc_cmpl_reg_new_vport() local
7227 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_reg_new_vport()
7233 vport->fc_flag &= ~FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_reg_new_vport()
7237 lpfc_printf_vlog(vport, KERN_ERR, LOG_MBOX, in lpfc_cmpl_reg_new_vport()
7250 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_cmpl_reg_new_vport()
7252 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); in lpfc_cmpl_reg_new_vport()
7254 lpfc_can_disctmo(vport); in lpfc_cmpl_reg_new_vport()
7259 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_reg_new_vport()
7261 lpfc_init_vpi(phba, pmb, vport->vpi); in lpfc_cmpl_reg_new_vport()
7262 pmb->vport = vport; in lpfc_cmpl_reg_new_vport()
7267 lpfc_printf_vlog(vport, in lpfc_cmpl_reg_new_vport()
7279 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_reg_new_vport()
7280 lpfc_mbx_unreg_vpi(vport); in lpfc_cmpl_reg_new_vport()
7282 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_reg_new_vport()
7284 if (vport->port_type == LPFC_PHYSICAL_PORT in lpfc_cmpl_reg_new_vport()
7285 && !(vport->fc_flag & FC_LOGO_RCVD_DID_CHNG)) in lpfc_cmpl_reg_new_vport()
7286 lpfc_issue_init_vfi(vport); in lpfc_cmpl_reg_new_vport()
7288 lpfc_initial_fdisc(vport); in lpfc_cmpl_reg_new_vport()
7293 vport->vpi_state |= LPFC_VPI_REGISTERED; in lpfc_cmpl_reg_new_vport()
7295 if (vport == phba->pport) { in lpfc_cmpl_reg_new_vport()
7297 lpfc_issue_fabric_reglogin(vport); in lpfc_cmpl_reg_new_vport()
7303 if (vport->port_state != LPFC_FDISC) in lpfc_cmpl_reg_new_vport()
7305 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
7308 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
7330 lpfc_register_new_vport(struct lpfc_hba *phba, struct lpfc_vport *vport, in lpfc_register_new_vport() argument
7333 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_register_new_vport()
7338 lpfc_reg_vpi(vport, mbox); in lpfc_register_new_vport()
7339 mbox->vport = vport; in lpfc_register_new_vport()
7350 lpfc_printf_vlog(vport, KERN_ERR, LOG_MBOX, in lpfc_register_new_vport()
7355 lpfc_printf_vlog(vport, KERN_ERR, LOG_MBOX, in lpfc_register_new_vport()
7362 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_register_new_vport()
7364 vport->fc_flag &= ~FC_VPORT_NEEDS_REG_VPI; in lpfc_register_new_vport()
7479 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_fdisc() local
7480 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_fdisc()
7490 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_fdisc()
7493 vport->fc_prevDID); in lpfc_cmpl_els_fdisc()
7499 lpfc_set_disctmo(piocb->vport); in lpfc_cmpl_els_fdisc()
7502 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_fdisc()
7504 irsp->ulpStatus, irsp->un.ulpWord[4], vport->fc_prevDID); in lpfc_cmpl_els_fdisc()
7517 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_fdisc()
7523 vport->fc_flag &= ~FC_VPORT_CVL_RCVD; in lpfc_cmpl_els_fdisc()
7524 vport->fc_flag &= ~FC_VPORT_LOGO_RCVD; in lpfc_cmpl_els_fdisc()
7525 vport->fc_flag |= FC_FABRIC; in lpfc_cmpl_els_fdisc()
7526 if (vport->phba->fc_topology == LPFC_TOPOLOGY_LOOP) in lpfc_cmpl_els_fdisc()
7527 vport->fc_flag |= FC_PUBLIC_LOOP; in lpfc_cmpl_els_fdisc()
7530 vport->fc_myDID = irsp->un.ulpWord[4] & Mask_DID; in lpfc_cmpl_els_fdisc()
7531 lpfc_vport_set_state(vport, FC_VPORT_ACTIVE); in lpfc_cmpl_els_fdisc()
7536 fabric_param_changed = lpfc_check_clean_addr_bit(vport, sp); in lpfc_cmpl_els_fdisc()
7537 memcpy(&vport->fabric_portname, &sp->portName, in lpfc_cmpl_els_fdisc()
7539 memcpy(&vport->fabric_nodename, &sp->nodeName, in lpfc_cmpl_els_fdisc()
7542 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_fdisc()
7548 &vport->fc_nodes, nlp_listp) { in lpfc_cmpl_els_fdisc()
7556 lpfc_unreg_rpi(vport, np); in lpfc_cmpl_els_fdisc()
7558 lpfc_cleanup_pending_mbox(vport); in lpfc_cmpl_els_fdisc()
7561 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_els_fdisc()
7563 lpfc_mbx_unreg_vpi(vport); in lpfc_cmpl_els_fdisc()
7565 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_els_fdisc()
7567 vport->fc_flag |= FC_VPORT_NEEDS_INIT_VPI; in lpfc_cmpl_els_fdisc()
7569 vport->fc_flag |= FC_LOGO_RCVD_DID_CHNG; in lpfc_cmpl_els_fdisc()
7572 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_fdisc()
7577 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
7581 if (vport->fc_flag & FC_VPORT_NEEDS_INIT_VPI) in lpfc_cmpl_els_fdisc()
7582 lpfc_issue_init_vpi(vport); in lpfc_cmpl_els_fdisc()
7583 else if (vport->fc_flag & FC_VPORT_NEEDS_REG_VPI) in lpfc_cmpl_els_fdisc()
7584 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
7586 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_fdisc()
7589 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_cmpl_els_fdisc()
7591 lpfc_can_disctmo(vport); in lpfc_cmpl_els_fdisc()
7618 lpfc_issue_els_fdisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_fdisc() argument
7621 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_fdisc()
7630 vport->port_state = LPFC_FDISC; in lpfc_issue_els_fdisc()
7631 vport->fc_myDID = 0; in lpfc_issue_els_fdisc()
7633 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, did, in lpfc_issue_els_fdisc()
7636 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_els_fdisc()
7637 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_issue_els_fdisc()
7658 memcpy(pcmd, &vport->phba->pport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_fdisc()
7672 memcpy(pcmd, &vport->fc_portname, 8); in lpfc_issue_els_fdisc()
7675 memcpy(pcmd, &vport->fc_nodename, 8); in lpfc_issue_els_fdisc()
7677 lpfc_set_disctmo(vport); in lpfc_issue_els_fdisc()
7682 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_fdisc()
7689 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_els_fdisc()
7690 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_issue_els_fdisc()
7694 lpfc_vport_set_state(vport, FC_VPORT_INITIALIZING); in lpfc_issue_els_fdisc()
7716 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_npiv_logo() local
7719 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_npiv_logo()
7723 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_npiv_logo()
7728 vport->unreg_vpi_cmpl = VPORT_ERROR; in lpfc_cmpl_els_npiv_logo()
7734 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_npiv_logo()
7738 irsp->ulpTimeout, vport->num_disc_nodes); in lpfc_cmpl_els_npiv_logo()
7742 vport->fc_flag &= ~FC_FABRIC; in lpfc_cmpl_els_npiv_logo()
7764 lpfc_issue_els_npiv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_issue_els_npiv_logo() argument
7766 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_npiv_logo()
7767 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_npiv_logo()
7774 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, 0, ndlp, ndlp->nlp_DID, in lpfc_issue_els_npiv_logo()
7785 *((uint32_t *) (pcmd)) = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_npiv_logo()
7787 memcpy(pcmd, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_npiv_logo()
7789 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_npiv_logo()
7872 lpfc_debugfs_disc_trc(iocb->vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_resume_fabric_iocbs()
7874 iocb->vport->port_state, 0, 0); in lpfc_resume_fabric_iocbs()
8042 lpfc_debugfs_disc_trc(iocb->vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_fabric_iocb()
8044 iocb->vport->port_state, 0, 0); in lpfc_issue_fabric_iocb()
8074 static void lpfc_fabric_abort_vport(struct lpfc_vport *vport) in lpfc_fabric_abort_vport() argument
8077 struct lpfc_hba *phba = vport->phba; in lpfc_fabric_abort_vport()
8084 if (piocb->vport != vport) in lpfc_fabric_abort_vport()
8161 lpfc_sli4_vport_delete_els_xri_aborted(struct lpfc_vport *vport) in lpfc_sli4_vport_delete_els_xri_aborted() argument
8163 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_vport_delete_els_xri_aborted()
8171 if (sglq_entry->ndlp && sglq_entry->ndlp->vport == vport) in lpfc_sli4_vport_delete_els_xri_aborted()
8254 lpfc_sli_abts_recover_port(struct lpfc_vport *vport, in lpfc_sli_abts_recover_port() argument
8261 shost = lpfc_shost_from_vport(vport); in lpfc_sli_abts_recover_port()
8262 phba = vport->phba; in lpfc_sli_abts_recover_port()
8274 vport->vpi, ndlp->nlp_rpi, ndlp->nlp_state, in lpfc_sli_abts_recover_port()
8283 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_sli_abts_recover_port()
8284 lpfc_nlp_set_state(vport, ndlp, NLP_STE_LOGO_ISSUE); in lpfc_sli_abts_recover_port()