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()
466 !(vport->fc_flag & FC_PT2PT)) { in lpfc_issue_reg_vfi()
467 ndlp = lpfc_findnode_did(vport, Fabric_DID); in lpfc_issue_reg_vfi()
490 vport->port_state = LPFC_FABRIC_CFG_LINK; in lpfc_issue_reg_vfi()
491 memcpy(dmabuf->virt, &phba->fc_fabparam, sizeof(vport->fc_sparam)); in lpfc_issue_reg_vfi()
492 lpfc_reg_vfi(mboxq, vport, dmabuf->phys); in lpfc_issue_reg_vfi()
495 mboxq->vport = vport; in lpfc_issue_reg_vfi()
511 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_reg_vfi()
512 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_issue_reg_vfi()
529 lpfc_issue_unreg_vfi(struct lpfc_vport *vport) in lpfc_issue_unreg_vfi() argument
531 struct lpfc_hba *phba = vport->phba; in lpfc_issue_unreg_vfi()
544 lpfc_unreg_vfi(mboxq, vport); in lpfc_issue_unreg_vfi()
545 mboxq->vport = vport; in lpfc_issue_unreg_vfi()
558 shost = lpfc_shost_from_vport(vport); in lpfc_issue_unreg_vfi()
560 vport->fc_flag &= ~FC_VFI_REGISTERED; in lpfc_issue_unreg_vfi()
584 lpfc_check_clean_addr_bit(struct lpfc_vport *vport, in lpfc_check_clean_addr_bit() argument
588 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_check_clean_addr_bit()
590 if ((vport->fc_prevDID != vport->fc_myDID) || in lpfc_check_clean_addr_bit()
591 memcmp(&vport->fabric_portname, &sp->portName, in lpfc_check_clean_addr_bit()
593 memcmp(&vport->fabric_nodename, &sp->nodeName, in lpfc_check_clean_addr_bit()
608 (vport->fc_prevDID || lpfc_delay_discovery)) { in lpfc_check_clean_addr_bit()
610 vport->fc_flag |= FC_DISC_DELAYED; in lpfc_check_clean_addr_bit()
639 lpfc_cmpl_els_flogi_fabric(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_els_flogi_fabric() argument
642 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_flogi_fabric()
643 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_fabric()
649 vport->fc_flag |= FC_FABRIC; in lpfc_cmpl_els_flogi_fabric()
661 vport->fc_flag |= FC_PUBLIC_LOOP; in lpfc_cmpl_els_flogi_fabric()
665 vport->fc_myDID = irsp->un.ulpWord[4] & Mask_DID; in lpfc_cmpl_els_flogi_fabric()
680 fabric_param_changed = lpfc_check_clean_addr_bit(vport, sp); in lpfc_cmpl_els_flogi_fabric()
681 memcpy(&vport->fabric_portname, &sp->portName, in lpfc_cmpl_els_flogi_fabric()
683 memcpy(&vport->fabric_nodename, &sp->nodeName, in lpfc_cmpl_els_flogi_fabric()
689 lpfc_printf_vlog(vport, KERN_WARNING, in lpfc_cmpl_els_flogi_fabric()
700 lpfc_printf_vlog(vport, KERN_WARNING, in lpfc_cmpl_els_flogi_fabric()
720 if (vport->fc_flag & FC_VFI_REGISTERED) in lpfc_cmpl_els_flogi_fabric()
721 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi_fabric()
725 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_flogi_fabric()
731 &vport->fc_nodes, nlp_listp) { in lpfc_cmpl_els_flogi_fabric()
740 lpfc_unreg_rpi(vport, np); in lpfc_cmpl_els_flogi_fabric()
742 lpfc_cleanup_pending_mbox(vport); in lpfc_cmpl_els_flogi_fabric()
745 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_els_flogi_fabric()
746 lpfc_mbx_unreg_vpi(vport); in lpfc_cmpl_els_flogi_fabric()
748 vport->fc_flag |= FC_VPORT_NEEDS_INIT_VPI; in lpfc_cmpl_els_flogi_fabric()
757 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_els_flogi_fabric()
760 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_flogi_fabric()
765 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_els_flogi_fabric()
766 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
771 lpfc_nlp_set_state(vport, ndlp, NLP_STE_REG_LOGIN_ISSUE); in lpfc_cmpl_els_flogi_fabric()
773 vport->fc_flag & FC_VPORT_NEEDS_REG_VPI) in lpfc_cmpl_els_flogi_fabric()
774 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_flogi_fabric()
776 lpfc_issue_fabric_reglogin(vport); in lpfc_cmpl_els_flogi_fabric()
779 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_els_flogi_fabric()
780 if ((!(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) && in lpfc_cmpl_els_flogi_fabric()
781 (vport->vpi_state & LPFC_VPI_REGISTERED)) { in lpfc_cmpl_els_flogi_fabric()
783 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_flogi_fabric()
784 } else if (vport->fc_flag & FC_VFI_REGISTERED) in lpfc_cmpl_els_flogi_fabric()
785 lpfc_issue_init_vpi(vport); in lpfc_cmpl_els_flogi_fabric()
787 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_flogi_fabric()
789 vport->fc_prevDID, vport->fc_myDID); in lpfc_cmpl_els_flogi_fabric()
790 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi_fabric()
817 lpfc_cmpl_els_flogi_nport(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_els_flogi_nport() argument
820 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_flogi_nport()
821 struct lpfc_hba *phba = vport->phba; in lpfc_cmpl_els_flogi_nport()
826 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); in lpfc_cmpl_els_flogi_nport()
831 rc = memcmp(&vport->fc_portname, &sp->portName, in lpfc_cmpl_els_flogi_nport()
832 sizeof(vport->fc_portname)); in lpfc_cmpl_els_flogi_nport()
838 vport->fc_flag |= FC_PT2PT_PLOGI; in lpfc_cmpl_els_flogi_nport()
848 vport->fc_myDID = PT2PT_LocalID; in lpfc_cmpl_els_flogi_nport()
857 mbox->vport = vport; in lpfc_cmpl_els_flogi_nport()
872 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi_nport()
879 ndlp = lpfc_findnode_did(vport, PT2PT_RemoteID); in lpfc_cmpl_els_flogi_nport()
888 lpfc_nlp_init(vport, ndlp, PT2PT_RemoteID); in lpfc_cmpl_els_flogi_nport()
890 ndlp = lpfc_enable_node(vport, ndlp, in lpfc_cmpl_els_flogi_nport()
901 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_els_flogi_nport()
916 vport->fc_flag |= FC_PT2PT; in lpfc_cmpl_els_flogi_nport()
930 vport->fc_flag &= ~FC_VFI_REGISTERED; in lpfc_cmpl_els_flogi_nport()
933 lpfc_issue_reg_vfi(vport); in lpfc_cmpl_els_flogi_nport()
937 lpfc_disc_start(vport); in lpfc_cmpl_els_flogi_nport()
970 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_flogi() local
971 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_flogi()
980 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_flogi()
988 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_flogi()
991 vport->port_state); in lpfc_cmpl_els_flogi()
1021 rc = lpfc_sli4_fcf_rr_next_proc(vport, fcf_index); in lpfc_cmpl_els_flogi()
1028 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()
1164 lpfc_disc_list_loopmap(vport); in lpfc_cmpl_els_flogi()
1167 lpfc_disc_start(vport); in lpfc_cmpl_els_flogi()
1175 lpfc_issue_clear_la(phba, vport); in lpfc_cmpl_els_flogi()
1204 lpfc_issue_els_flogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_flogi() argument
1207 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
1457 if (vport->num_disc_nodes) in lpfc_more_plogi()
1458 vport->num_disc_nodes--; in lpfc_more_plogi()
1461 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_more_plogi()
1464 vport->num_disc_nodes, vport->fc_plogi_cnt, in lpfc_more_plogi()
1465 vport->fc_flag, vport->port_state); in lpfc_more_plogi()
1467 if (vport->fc_flag & FC_NLP_MORE) in lpfc_more_plogi()
1469 lpfc_els_disc_plogi(vport); in lpfc_more_plogi()
1509 struct lpfc_vport *vport = ndlp->vport; in lpfc_plogi_confirm_nport() local
1510 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_plogi_confirm_nport()
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()
1614 lpfc_nlp_set_state(vport, new_ndlp, ndlp->nlp_state); in lpfc_plogi_confirm_nport()
1621 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_plogi_confirm_nport()
1657 lpfc_drop_node(vport, ndlp); in lpfc_plogi_confirm_nport()
1660 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_plogi_confirm_nport()
1664 lpfc_unreg_rpi(vport, ndlp); in lpfc_plogi_confirm_nport()
1680 lpfc_nlp_set_state(vport, ndlp, keep_nlp_state); in lpfc_plogi_confirm_nport()
1715 lpfc_end_rscn(struct lpfc_vport *vport) in lpfc_end_rscn() argument
1717 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_end_rscn()
1719 if (vport->fc_flag & FC_RSCN_MODE) { in lpfc_end_rscn()
1724 if (vport->fc_rscn_id_cnt || in lpfc_end_rscn()
1725 (vport->fc_flag & FC_RSCN_DISCOVERY) != 0) in lpfc_end_rscn()
1726 lpfc_els_handle_rscn(vport); in lpfc_end_rscn()
1729 vport->fc_flag &= ~FC_RSCN_MODE; in lpfc_end_rscn()
1751 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_rrq() local
1761 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_rrq()
1766 ndlp = lpfc_findnode_did(vport, irsp->un.elsreq64.remoteID); in lpfc_cmpl_els_rrq()
1768 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_rrq()
1778 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_rrq()
1791 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_rrq()
1826 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_plogi() local
1827 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_plogi()
1837 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_plogi()
1842 ndlp = lpfc_findnode_did(vport, irsp->un.elsreq64.remoteID); in lpfc_cmpl_els_plogi()
1844 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_plogi()
1863 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_plogi()
1867 irsp->ulpTimeout, disc, vport->num_disc_nodes); in lpfc_cmpl_els_plogi()
1869 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_plogi()
1892 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_plogi()
1900 rc = lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_plogi()
1908 rc = lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_plogi()
1912 if (disc && vport->num_disc_nodes) { in lpfc_cmpl_els_plogi()
1914 lpfc_more_plogi(vport); in lpfc_cmpl_els_plogi()
1916 if (vport->num_disc_nodes == 0) { in lpfc_cmpl_els_plogi()
1918 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_cmpl_els_plogi()
1921 lpfc_can_disctmo(vport); in lpfc_cmpl_els_plogi()
1922 lpfc_end_rscn(vport); in lpfc_cmpl_els_plogi()
1953 lpfc_issue_els_plogi(struct lpfc_vport *vport, uint32_t did, uint8_t retry) in lpfc_issue_els_plogi() argument
1955 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_plogi()
1963 ndlp = lpfc_findnode_did(vport, did); in lpfc_issue_els_plogi()
1969 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, did, in lpfc_issue_els_plogi()
1979 memcpy(pcmd, &vport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_plogi()
1986 if ((vport->fc_flag & FC_FABRIC) && !(vport->fc_flag & FC_PUBLIC_LOOP)) in lpfc_issue_els_plogi()
1995 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_plogi()
2027 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_prli() local
2028 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_prli()
2041 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_prli()
2046 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_prli()
2050 irsp->ulpTimeout, vport->num_disc_nodes); in lpfc_cmpl_els_prli()
2052 vport->fc_prli_sent--; in lpfc_cmpl_els_prli()
2054 if (lpfc_els_chk_latt(vport)) in lpfc_cmpl_els_prli()
2064 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_prli()
2072 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_prli()
2076 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_prli()
2105 lpfc_issue_els_prli(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_prli() argument
2108 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_prli()
2109 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_prli()
2116 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_prli()
2141 if (vport->cfg_first_burst_size) in lpfc_issue_els_prli()
2148 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_prli()
2165 vport->fc_prli_sent++; in lpfc_issue_els_prli()
2182 lpfc_rscn_disc(struct lpfc_vport *vport) in lpfc_rscn_disc() argument
2184 lpfc_can_disctmo(vport); in lpfc_rscn_disc()
2188 if (vport->fc_npr_cnt) in lpfc_rscn_disc()
2189 if (lpfc_els_disc_plogi(vport)) in lpfc_rscn_disc()
2192 lpfc_end_rscn(vport); in lpfc_rscn_disc()
2206 lpfc_adisc_done(struct lpfc_vport *vport) in lpfc_adisc_done() argument
2208 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_adisc_done()
2209 struct lpfc_hba *phba = vport->phba; in lpfc_adisc_done()
2216 !(vport->fc_flag & FC_RSCN_MODE) && in lpfc_adisc_done()
2226 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2227 lpfc_issue_reg_vpi(phba, vport); in lpfc_adisc_done()
2234 if (vport->port_state < LPFC_VPORT_READY) { in lpfc_adisc_done()
2236 lpfc_issue_clear_la(phba, vport); in lpfc_adisc_done()
2237 if (!(vport->fc_flag & FC_ABORT_DISCOVERY)) { in lpfc_adisc_done()
2238 vport->num_disc_nodes = 0; in lpfc_adisc_done()
2240 if (vport->fc_npr_cnt) in lpfc_adisc_done()
2241 lpfc_els_disc_plogi(vport); in lpfc_adisc_done()
2242 if (!vport->num_disc_nodes) { in lpfc_adisc_done()
2244 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_adisc_done()
2246 lpfc_can_disctmo(vport); in lpfc_adisc_done()
2247 lpfc_end_rscn(vport); in lpfc_adisc_done()
2250 vport->port_state = LPFC_VPORT_READY; in lpfc_adisc_done()
2252 lpfc_rscn_disc(vport); in lpfc_adisc_done()
2265 lpfc_more_adisc(struct lpfc_vport *vport) in lpfc_more_adisc() argument
2267 if (vport->num_disc_nodes) in lpfc_more_adisc()
2268 vport->num_disc_nodes--; in lpfc_more_adisc()
2270 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_more_adisc()
2273 vport->num_disc_nodes, vport->fc_adisc_cnt, in lpfc_more_adisc()
2274 vport->fc_flag, vport->port_state); in lpfc_more_adisc()
2276 if (vport->fc_flag & FC_NLP_MORE) { in lpfc_more_adisc()
2277 lpfc_set_disctmo(vport); in lpfc_more_adisc()
2279 lpfc_els_disc_adisc(vport); in lpfc_more_adisc()
2281 if (!vport->num_disc_nodes) in lpfc_more_adisc()
2282 lpfc_adisc_done(vport); in lpfc_more_adisc()
2306 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_adisc() local
2307 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_adisc()
2318 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_adisc()
2331 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_adisc()
2335 irsp->ulpTimeout, disc, vport->num_disc_nodes); in lpfc_cmpl_els_adisc()
2337 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_adisc()
2352 lpfc_set_disctmo(vport); in lpfc_cmpl_els_adisc()
2357 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_adisc()
2363 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_adisc()
2367 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_adisc()
2371 if (disc && vport->num_disc_nodes) in lpfc_cmpl_els_adisc()
2372 lpfc_more_adisc(vport); in lpfc_cmpl_els_adisc()
2399 lpfc_issue_els_adisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_adisc() argument
2402 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_adisc()
2403 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_adisc()
2410 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_adisc()
2424 memcpy(&ap->portName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_adisc()
2425 memcpy(&ap->nodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_issue_els_adisc()
2426 ap->DID = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_adisc()
2428 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_adisc()
2465 struct lpfc_vport *vport = ndlp->vport; in lpfc_cmpl_els_logo() local
2466 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_logo()
2480 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_logo()
2486 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_logo()
2490 irsp->ulpTimeout, vport->num_disc_nodes); in lpfc_cmpl_els_logo()
2492 if (lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_logo()
2502 lpfc_disc_state_machine(vport, ndlp, cmdiocb, in lpfc_cmpl_els_logo()
2516 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_logo()
2528 lpfc_disc_state_machine(vport, ndlp, cmdiocb, NLP_EVT_CMPL_LOGO); in lpfc_cmpl_els_logo()
2533 if ((vport->fc_flag & FC_PT2PT) && in lpfc_cmpl_els_logo()
2534 !(vport->fc_flag & FC_PT2PT_PLOGI)) { in lpfc_cmpl_els_logo()
2540 mbox->vport = vport; in lpfc_cmpl_els_logo()
2555 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_cmpl_els_logo()
2560 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_logo()
2565 vport->num_disc_nodes); in lpfc_cmpl_els_logo()
2566 lpfc_disc_start(vport); in lpfc_cmpl_els_logo()
2592 lpfc_issue_els_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_logo() argument
2595 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_logo()
2596 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_logo()
2610 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_logo()
2620 *((uint32_t *) (pcmd)) = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_logo()
2622 memcpy(pcmd, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_logo()
2624 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_logo()
2639 if (lpfc_unreg_rpi(vport, ndlp)) { in lpfc_issue_els_logo()
2682 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_cmd() local
2687 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_cmd()
2692 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_cmd()
2697 lpfc_els_chk_latt(vport); in lpfc_cmpl_els_cmd()
2725 lpfc_issue_els_scr(struct lpfc_vport *vport, uint32_t nportid, uint8_t retry) in lpfc_issue_els_scr() argument
2727 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_scr()
2735 ndlp = lpfc_findnode_did(vport, nportid); in lpfc_issue_els_scr()
2740 lpfc_nlp_init(vport, ndlp, nportid); in lpfc_issue_els_scr()
2741 lpfc_enqueue_node(vport, ndlp); in lpfc_issue_els_scr()
2743 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_issue_els_scr()
2748 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_scr()
2768 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_scr()
2815 lpfc_issue_els_farpr(struct lpfc_vport *vport, uint32_t nportid, uint8_t retry) in lpfc_issue_els_farpr() argument
2817 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_farpr()
2828 ndlp = lpfc_findnode_did(vport, nportid); in lpfc_issue_els_farpr()
2833 lpfc_nlp_init(vport, ndlp, nportid); in lpfc_issue_els_farpr()
2834 lpfc_enqueue_node(vport, ndlp); in lpfc_issue_els_farpr()
2836 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_issue_els_farpr()
2841 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, in lpfc_issue_els_farpr()
2861 *lp++ = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_farpr()
2865 memcpy(&fp->RportName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_farpr()
2866 memcpy(&fp->RnodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_issue_els_farpr()
2867 ondlp = lpfc_findnode_did(vport, nportid); in lpfc_issue_els_farpr()
2875 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_farpr()
2911 lpfc_cancel_retry_delay_tmo(struct lpfc_vport *vport, struct lpfc_nodelist *nlp) in lpfc_cancel_retry_delay_tmo() argument
2913 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cancel_retry_delay_tmo()
2933 if (vport->num_disc_nodes) { in lpfc_cancel_retry_delay_tmo()
2934 if (vport->port_state < LPFC_VPORT_READY) { in lpfc_cancel_retry_delay_tmo()
2936 lpfc_more_adisc(vport); in lpfc_cancel_retry_delay_tmo()
2939 lpfc_more_plogi(vport); in lpfc_cancel_retry_delay_tmo()
2940 if (vport->num_disc_nodes == 0) { in lpfc_cancel_retry_delay_tmo()
2942 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_cancel_retry_delay_tmo()
2944 lpfc_can_disctmo(vport); in lpfc_cancel_retry_delay_tmo()
2945 lpfc_end_rscn(vport); in lpfc_cancel_retry_delay_tmo()
2971 struct lpfc_vport *vport = ndlp->vport; in lpfc_els_retry_delay() local
2972 struct lpfc_hba *phba = vport->phba; in lpfc_els_retry_delay()
3007 struct lpfc_vport *vport = ndlp->vport; in lpfc_els_retry_delay_handler() local
3008 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_retry_delay_handler()
3033 lpfc_issue_els_flogi(vport, ndlp, retry); in lpfc_els_retry_delay_handler()
3036 if (!lpfc_issue_els_plogi(vport, ndlp->nlp_DID, retry)) { in lpfc_els_retry_delay_handler()
3038 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_els_retry_delay_handler()
3042 if (!lpfc_issue_els_adisc(vport, ndlp, retry)) { in lpfc_els_retry_delay_handler()
3044 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_els_retry_delay_handler()
3048 if (!lpfc_issue_els_prli(vport, ndlp, retry)) { in lpfc_els_retry_delay_handler()
3050 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PRLI_ISSUE); in lpfc_els_retry_delay_handler()
3054 if (!lpfc_issue_els_logo(vport, ndlp, retry)) { in lpfc_els_retry_delay_handler()
3056 lpfc_nlp_set_state(vport, ndlp, NLP_STE_LOGO_ISSUE); in lpfc_els_retry_delay_handler()
3060 if (!(vport->fc_flag & FC_VPORT_NEEDS_INIT_VPI)) in lpfc_els_retry_delay_handler()
3061 lpfc_issue_els_fdisc(vport, ndlp, retry); in lpfc_els_retry_delay_handler()
3092 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_els_retry() local
3093 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_retry()
3119 ndlp = lpfc_findnode_did(vport, did); in lpfc_els_retry()
3125 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_els_retry()
3160 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_retry()
3247 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_retry()
3251 lpfc_vport_set_state(vport, in lpfc_els_retry()
3288 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_retry()
3292 lpfc_vport_set_state(vport, in lpfc_els_retry()
3328 maxretry = vport->cfg_devloss_tmo; in lpfc_els_retry()
3338 if ((vport->load_flag & FC_UNLOADING) != 0) in lpfc_els_retry()
3345 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_retry()
3355 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_retry()
3367 if (timer_pending(&vport->fc_disctmo) || in lpfc_els_retry()
3368 (vport->fc_flag & FC_RSCN_MODE)) in lpfc_els_retry()
3369 lpfc_set_disctmo(vport); in lpfc_els_retry()
3386 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_retry()
3389 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_retry()
3397 lpfc_issue_els_flogi(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
3400 lpfc_issue_els_fdisc(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
3405 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_retry()
3408 lpfc_issue_els_plogi(vport, did, cmdiocb->retry); in lpfc_els_retry()
3412 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_els_retry()
3413 lpfc_issue_els_adisc(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
3417 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PRLI_ISSUE); in lpfc_els_retry()
3418 lpfc_issue_els_prli(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
3422 lpfc_nlp_set_state(vport, ndlp, NLP_STE_LOGO_ISSUE); in lpfc_els_retry()
3423 lpfc_issue_els_logo(vport, ndlp, cmdiocb->retry); in lpfc_els_retry()
3429 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_retry()
3436 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_retry()
3612 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_logo_acc() local
3616 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_cmpl_els_logo_acc()
3620 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_logo_acc()
3632 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_els_logo_acc()
3674 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE, in lpfc_mbx_cmpl_dflt_rpi()
3687 lpfc_drop_node(ndlp->vport, ndlp); in lpfc_mbx_cmpl_dflt_rpi()
3715 struct lpfc_vport *vport = ndlp ? ndlp->vport : NULL; in lpfc_cmpl_els_rsp() local
3716 struct Scsi_Host *shost = vport ? lpfc_shost_from_vport(vport) : NULL; in lpfc_cmpl_els_rsp()
3742 if (!ndlp || !NLP_CHK_NODE_ACT(ndlp) || lpfc_els_chk_latt(vport)) { in lpfc_cmpl_els_rsp()
3764 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_cmpl_els_rsp()
3769 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_rsp()
3779 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_els_rsp()
3784 mbox->vport = vport; in lpfc_cmpl_els_rsp()
3792 lpfc_nlp_set_state(vport, ndlp, in lpfc_cmpl_els_rsp()
3805 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_rsp()
3891 lpfc_els_rsp_acc(struct lpfc_vport *vport, uint32_t flag, in lpfc_els_rsp_acc() argument
3895 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_rsp_acc()
3896 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_acc()
3910 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, in lpfc_els_rsp_acc()
3926 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_acc()
3932 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, in lpfc_els_rsp_acc()
3947 memcpy(pcmd, &vport->fc_sparam, sizeof(struct serv_parm)); in lpfc_els_rsp_acc()
3949 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_acc()
3955 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, in lpfc_els_rsp_acc()
3971 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_acc()
3979 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_acc()
3985 ndlp->nlp_rpi, vport->fc_flag); in lpfc_els_rsp_acc()
4029 lpfc_els_rsp_reject(struct lpfc_vport *vport, uint32_t rejectError, in lpfc_els_rsp_reject() argument
4033 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_reject()
4042 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_reject()
4061 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_reject()
4068 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_reject()
4103 lpfc_els_rsp_adisc_acc(struct lpfc_vport *vport, struct lpfc_iocbq *oldiocb, in lpfc_els_rsp_adisc_acc() argument
4106 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_adisc_acc()
4115 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_adisc_acc()
4126 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_adisc_acc()
4139 memcpy(&ap->portName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_els_rsp_adisc_acc()
4140 memcpy(&ap->nodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_els_rsp_adisc_acc()
4141 ap->DID = be32_to_cpu(vport->fc_myDID); in lpfc_els_rsp_adisc_acc()
4143 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_adisc_acc()
4177 lpfc_els_rsp_prli_acc(struct lpfc_vport *vport, struct lpfc_iocbq *oldiocb, in lpfc_els_rsp_prli_acc() argument
4180 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_prli_acc()
4191 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_prli_acc()
4202 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_prli_acc()
4237 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_prli_acc()
4279 lpfc_els_rsp_rnid_acc(struct lpfc_vport *vport, uint8_t format, in lpfc_els_rsp_rnid_acc() argument
4282 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rnid_acc()
4295 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_rnid_acc()
4306 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rnid_acc()
4317 memcpy(&rn->portName, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_els_rsp_rnid_acc()
4318 memcpy(&rn->nodeName, &vport->fc_nodename, sizeof(struct lpfc_name)); in lpfc_els_rsp_rnid_acc()
4326 &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_els_rsp_rnid_acc()
4337 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_rnid_acc()
4361 lpfc_els_clear_rrq(struct lpfc_vport *vport, in lpfc_els_clear_rrq() argument
4364 struct lpfc_hba *phba = vport->phba; in lpfc_els_clear_rrq()
4378 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_clear_rrq()
4386 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_clear_rrq()
4389 if (vport->fc_myDID == be32_to_cpu(bf_get(rrq_did, rrq))) in lpfc_els_clear_rrq()
4393 prrq = lpfc_get_active_rrq(vport, xri, ndlp->nlp_DID); in lpfc_els_clear_rrq()
4411 lpfc_els_rsp_echo_acc(struct lpfc_vport *vport, uint8_t *data, in lpfc_els_rsp_echo_acc() argument
4414 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_echo_acc()
4427 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_echo_acc()
4436 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_echo_acc()
4444 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_RSP, in lpfc_els_rsp_echo_acc()
4479 lpfc_els_disc_adisc(struct lpfc_vport *vport) in lpfc_els_disc_adisc() argument
4481 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_disc_adisc()
4486 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_els_disc_adisc()
4496 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_els_disc_adisc()
4497 lpfc_issue_els_adisc(vport, ndlp, 0); in lpfc_els_disc_adisc()
4499 vport->num_disc_nodes++; in lpfc_els_disc_adisc()
4500 if (vport->num_disc_nodes >= in lpfc_els_disc_adisc()
4501 vport->cfg_discovery_threads) { in lpfc_els_disc_adisc()
4503 vport->fc_flag |= FC_NLP_MORE; in lpfc_els_disc_adisc()
4511 vport->fc_flag &= ~FC_NLP_MORE; in lpfc_els_disc_adisc()
4537 lpfc_els_disc_plogi(struct lpfc_vport *vport) in lpfc_els_disc_plogi() argument
4539 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_disc_plogi()
4544 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_els_disc_plogi()
4552 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_els_disc_plogi()
4553 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_els_disc_plogi()
4555 vport->num_disc_nodes++; in lpfc_els_disc_plogi()
4556 if (vport->num_disc_nodes >= in lpfc_els_disc_plogi()
4557 vport->cfg_discovery_threads) { in lpfc_els_disc_plogi()
4559 vport->fc_flag |= FC_NLP_MORE; in lpfc_els_disc_plogi()
4566 lpfc_set_disctmo(vport); in lpfc_els_disc_plogi()
4570 vport->fc_flag &= ~FC_NLP_MORE; in lpfc_els_disc_plogi()
4753 struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_rdp_res_attach_port_names() argument
4757 if (vport->fc_flag & FC_FABRIC) { in lpfc_rdp_res_attach_port_names()
4758 memcpy(desc->port_names.wwnn, &vport->fabric_nodename, in lpfc_rdp_res_attach_port_names()
4761 memcpy(desc->port_names.wwpn, &vport->fabric_portname, in lpfc_rdp_res_attach_port_names()
4779 struct lpfc_vport *vport = ndlp->vport; in lpfc_els_rdp_cmpl() local
4792 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, in lpfc_els_rdp_cmpl()
4803 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rdp_cmpl()
4825 vport, ndlp); in lpfc_els_rdp_cmpl()
4840 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, lpfc_max_els_tries, in lpfc_els_rdp_cmpl()
4880 mbox->vport = rdp_context->ndlp->vport; in lpfc_get_rdp_info()
4913 lpfc_els_rcv_rdp(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rdp() argument
4916 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rdp()
4943 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_rdp()
4972 lpfc_printf_vlog(ndlp->vport, KERN_WARNING, LOG_ELS, in lpfc_els_rcv_rdp()
4989 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rdp()
5093 lpfc_sli4_set_beacon(struct lpfc_vport *vport, in lpfc_sli4_set_beacon() argument
5097 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_set_beacon()
5112 mbox->vport = phba->pport; in lpfc_sli4_set_beacon()
5145 lpfc_els_rcv_lcb(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_lcb() argument
5148 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_lcb()
5160 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_lcb()
5219 if (lpfc_sli4_set_beacon(vport, lcb_context, state)) { in lpfc_els_rcv_lcb()
5220 lpfc_printf_vlog(ndlp->vport, KERN_ERR, in lpfc_els_rcv_lcb()
5231 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_lcb()
5246 lpfc_els_flush_rscn(struct lpfc_vport *vport) in lpfc_els_flush_rscn() argument
5248 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_flush_rscn()
5249 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_rscn()
5253 if (vport->fc_rscn_flush) { in lpfc_els_flush_rscn()
5259 vport->fc_rscn_flush = 1; in lpfc_els_flush_rscn()
5262 for (i = 0; i < vport->fc_rscn_id_cnt; i++) { in lpfc_els_flush_rscn()
5263 lpfc_in_buf_free(phba, vport->fc_rscn_id_list[i]); in lpfc_els_flush_rscn()
5264 vport->fc_rscn_id_list[i] = NULL; in lpfc_els_flush_rscn()
5267 vport->fc_rscn_id_cnt = 0; in lpfc_els_flush_rscn()
5268 vport->fc_flag &= ~(FC_RSCN_MODE | FC_RSCN_DISCOVERY); in lpfc_els_flush_rscn()
5270 lpfc_can_disctmo(vport); in lpfc_els_flush_rscn()
5272 vport->fc_rscn_flush = 0; in lpfc_els_flush_rscn()
5288 lpfc_rscn_payload_check(struct lpfc_vport *vport, uint32_t did) in lpfc_rscn_payload_check() argument
5294 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_rscn_payload_check()
5303 if (vport->fc_flag & FC_RSCN_DISCOVERY) in lpfc_rscn_payload_check()
5307 if (vport->fc_rscn_flush) { in lpfc_rscn_payload_check()
5313 vport->fc_rscn_flush = 1; in lpfc_rscn_payload_check()
5315 for (i = 0; i < vport->fc_rscn_id_cnt; i++) { in lpfc_rscn_payload_check()
5316 lp = vport->fc_rscn_id_list[i]->virt; in lpfc_rscn_payload_check()
5344 vport->fc_rscn_flush = 0; in lpfc_rscn_payload_check()
5348 vport->fc_rscn_flush = 0; in lpfc_rscn_payload_check()
5364 lpfc_rscn_recovery_check(struct lpfc_vport *vport) in lpfc_rscn_recovery_check() argument
5369 list_for_each_entry(ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_rscn_recovery_check()
5372 !lpfc_rscn_payload_check(vport, ndlp->nlp_DID)) in lpfc_rscn_recovery_check()
5374 lpfc_disc_state_machine(vport, ndlp, NULL, in lpfc_rscn_recovery_check()
5376 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_rscn_recovery_check()
5390 lpfc_send_rscn_event(struct lpfc_vport *vport, in lpfc_send_rscn_event() argument
5394 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_send_rscn_event()
5406 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_send_rscn_event()
5447 lpfc_els_rcv_rscn(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rscn() argument
5450 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_rcv_rscn()
5451 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rscn()
5465 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
5467 vport->fc_flag, payload_len, *lp, in lpfc_els_rcv_rscn()
5468 vport->fc_rscn_id_cnt); in lpfc_els_rcv_rscn()
5471 lpfc_send_rscn_event(vport, cmdiocb); in lpfc_els_rcv_rscn()
5480 if (vport->port_state <= LPFC_NS_QRY) { in lpfc_els_rcv_rscn()
5481 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
5483 ndlp->nlp_DID, vport->port_state, ndlp->nlp_flag); in lpfc_els_rcv_rscn()
5485 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
5493 !(vport->cfg_peer_port_login)) { in lpfc_els_rcv_rscn()
5506 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
5509 vport->fc_flag, payload_len, in lpfc_els_rcv_rscn()
5510 *lp, vport->fc_rscn_id_cnt); in lpfc_els_rcv_rscn()
5511 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
5513 ndlp->nlp_DID, vport->port_state, in lpfc_els_rcv_rscn()
5516 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, in lpfc_els_rcv_rscn()
5523 if (vport->fc_rscn_flush) { in lpfc_els_rcv_rscn()
5525 vport->fc_flag |= FC_RSCN_DISCOVERY; in lpfc_els_rcv_rscn()
5528 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
5532 vport->fc_rscn_flush = 1; in lpfc_els_rcv_rscn()
5535 rscn_cnt = vport->fc_rscn_id_cnt; in lpfc_els_rcv_rscn()
5539 if (vport->fc_flag & (FC_RSCN_MODE | FC_NDISC_ACTIVE)) { in lpfc_els_rcv_rscn()
5540 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
5542 ndlp->nlp_DID, vport->port_state, ndlp->nlp_flag); in lpfc_els_rcv_rscn()
5545 vport->fc_flag |= FC_RSCN_DEFERRED; in lpfc_els_rcv_rscn()
5547 !(vport->fc_flag & FC_RSCN_DISCOVERY)) { in lpfc_els_rcv_rscn()
5548 vport->fc_flag |= FC_RSCN_MODE; in lpfc_els_rcv_rscn()
5551 cmd = vport->fc_rscn_id_list[rscn_cnt-1]->virt; in lpfc_els_rcv_rscn()
5561 vport->fc_rscn_id_list[rscn_cnt] = pcmd; in lpfc_els_rcv_rscn()
5562 vport->fc_rscn_id_cnt++; in lpfc_els_rcv_rscn()
5569 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
5572 vport->fc_rscn_id_cnt, vport->fc_flag, in lpfc_els_rcv_rscn()
5573 vport->port_state); in lpfc_els_rcv_rscn()
5575 vport->fc_flag |= FC_RSCN_DISCOVERY; in lpfc_els_rcv_rscn()
5578 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_rcv_rscn()
5581 vport->fc_rscn_id_cnt, vport->fc_flag, in lpfc_els_rcv_rscn()
5582 vport->port_state); in lpfc_els_rcv_rscn()
5585 vport->fc_rscn_flush = 0; in lpfc_els_rcv_rscn()
5587 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
5589 lpfc_rscn_recovery_check(vport); in lpfc_els_rcv_rscn()
5591 vport->fc_flag &= ~FC_RSCN_DEFERRED; in lpfc_els_rcv_rscn()
5595 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_rcv_rscn()
5597 ndlp->nlp_DID, vport->port_state, ndlp->nlp_flag); in lpfc_els_rcv_rscn()
5600 vport->fc_flag |= FC_RSCN_MODE; in lpfc_els_rcv_rscn()
5602 vport->fc_rscn_id_list[vport->fc_rscn_id_cnt++] = pcmd; in lpfc_els_rcv_rscn()
5604 vport->fc_rscn_flush = 0; in lpfc_els_rcv_rscn()
5610 lpfc_set_disctmo(vport); in lpfc_els_rcv_rscn()
5612 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rscn()
5614 lpfc_rscn_recovery_check(vport); in lpfc_els_rcv_rscn()
5615 return lpfc_els_handle_rscn(vport); in lpfc_els_rcv_rscn()
5635 lpfc_els_handle_rscn(struct lpfc_vport *vport) in lpfc_els_handle_rscn() argument
5638 struct lpfc_hba *phba = vport->phba; in lpfc_els_handle_rscn()
5641 if (vport->load_flag & FC_UNLOADING) { in lpfc_els_handle_rscn()
5642 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
5647 lpfc_set_disctmo(vport); in lpfc_els_handle_rscn()
5650 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_handle_rscn()
5652 vport->fc_flag, 0, vport->fc_rscn_id_cnt, in lpfc_els_handle_rscn()
5653 vport->port_state); in lpfc_els_handle_rscn()
5656 vport->fc_ns_retry = 0; in lpfc_els_handle_rscn()
5657 vport->num_disc_nodes = 0; in lpfc_els_handle_rscn()
5659 ndlp = lpfc_findnode_did(vport, NameServer_DID); in lpfc_els_handle_rscn()
5663 if (lpfc_ns_cmd(vport, SLI_CTNS_GID_FT, 0, 0) == 0) in lpfc_els_handle_rscn()
5670 ndlp = lpfc_findnode_did(vport, NameServer_DID); in lpfc_els_handle_rscn()
5677 ndlp = lpfc_enable_node(vport, ndlp, in lpfc_els_handle_rscn()
5680 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
5687 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
5690 lpfc_nlp_init(vport, ndlp, NameServer_DID); in lpfc_els_handle_rscn()
5692 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_els_handle_rscn()
5695 lpfc_issue_els_plogi(vport, NameServer_DID, 0); in lpfc_els_handle_rscn()
5702 lpfc_els_flush_rscn(vport); in lpfc_els_handle_rscn()
5732 lpfc_els_rcv_flogi(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_flogi() argument
5735 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_els_rcv_flogi()
5736 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_flogi()
5753 lpfc_set_disctmo(vport); in lpfc_els_rcv_flogi()
5761 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_rcv_flogi()
5768 if ((lpfc_check_sparm(vport, ndlp, sp, CLASS3, 1))) { in lpfc_els_rcv_flogi()
5773 rc = memcmp(&vport->fc_portname, &sp->portName, in lpfc_els_rcv_flogi()
5788 mbox->vport = vport; in lpfc_els_rcv_flogi()
5804 vport->fc_flag |= FC_PT2PT_PLOGI; in lpfc_els_rcv_flogi()
5812 vport->fc_myDID = PT2PT_LocalID; in lpfc_els_rcv_flogi()
5814 vport->fc_myDID = PT2PT_RemoteID; in lpfc_els_rcv_flogi()
5821 fc_flag = vport->fc_flag; in lpfc_els_rcv_flogi()
5822 port_state = vport->port_state; in lpfc_els_rcv_flogi()
5823 vport->fc_flag |= FC_PT2PT; in lpfc_els_rcv_flogi()
5824 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); in lpfc_els_rcv_flogi()
5826 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_flogi()
5829 port_state, vport->port_state, in lpfc_els_rcv_flogi()
5830 fc_flag, vport->fc_flag); in lpfc_els_rcv_flogi()
5837 did = vport->fc_myDID; in lpfc_els_rcv_flogi()
5838 vport->fc_myDID = Fabric_DID; in lpfc_els_rcv_flogi()
5852 did = vport->fc_myDID; in lpfc_els_rcv_flogi()
5853 vport->fc_myDID = Fabric_DID; in lpfc_els_rcv_flogi()
5855 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_els_rcv_flogi()
5859 vport->fc_myDID = did; in lpfc_els_rcv_flogi()
5865 if (vport->port_state < LPFC_FLOGI) { in lpfc_els_rcv_flogi()
5866 vport->fc_myDID = 0; in lpfc_els_rcv_flogi()
5867 lpfc_initial_flogi(vport); in lpfc_els_rcv_flogi()
5868 vport->fc_myDID = Fabric_DID; in lpfc_els_rcv_flogi()
5872 lpfc_els_rsp_acc(vport, ELS_CMD_PLOGI, cmdiocb, ndlp, NULL); in lpfc_els_rcv_flogi()
5875 vport->fc_myDID = did; in lpfc_els_rcv_flogi()
5877 if (!(vport->fc_flag & FC_PT2PT_PLOGI)) { in lpfc_els_rcv_flogi()
5886 mbox->vport = vport; in lpfc_els_rcv_flogi()
5916 lpfc_els_rcv_rnid(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rnid() argument
5937 lpfc_els_rsp_rnid_acc(vport, rn->Format, cmdiocb, ndlp); in lpfc_els_rcv_rnid()
5945 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_els_rcv_rnid()
5961 lpfc_els_rcv_echo(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_echo() argument
5971 lpfc_els_rsp_echo_acc(vport, pcmd, cmdiocb, ndlp); in lpfc_els_rcv_echo()
5989 lpfc_els_rcv_lirr(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_lirr() argument
5999 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_lirr()
6020 lpfc_els_rcv_rrq(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rrq() argument
6023 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rrq()
6024 if (vport->phba->sli_rev == LPFC_SLI_REV4) in lpfc_els_rcv_rrq()
6025 lpfc_els_clear_rrq(vport, cmdiocb, ndlp); in lpfc_els_rcv_rrq()
6103 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rls_acc()
6198 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rps_acc()
6230 lpfc_els_rcv_rls(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rls() argument
6233 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rls()
6249 mbox->vport = vport; in lpfc_els_rcv_rls()
6267 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rls()
6293 lpfc_els_rcv_rtv(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rtv() argument
6296 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rtv()
6335 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_rtv()
6355 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rtv()
6377 lpfc_els_rcv_rps(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rps() argument
6380 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_rps()
6400 ((flag == 2) && (memcmp(&rps->un.portName, &vport->fc_portname, in lpfc_els_rcv_rps()
6412 mbox->vport = vport; in lpfc_els_rcv_rps()
6432 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_els_rcv_rps()
6450 lpfc_issue_els_rrq(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_rrq() argument
6453 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_rrq()
6468 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, 0, ndlp, did, in lpfc_issue_els_rrq()
6482 bf_set(rrq_did, els_rrq, vport->fc_myDID); in lpfc_issue_els_rrq()
6487 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_rrq()
6516 struct lpfc_nodelist *ndlp = lpfc_findnode_did(rrq->vport, in lpfc_send_rrq()
6519 return lpfc_issue_els_rrq(rrq->vport, ndlp, in lpfc_send_rrq()
6545 lpfc_els_rsp_rpl_acc(struct lpfc_vport *vport, uint16_t cmdsize, in lpfc_els_rsp_rpl_acc() argument
6548 struct lpfc_hba *phba = vport->phba; in lpfc_els_rsp_rpl_acc()
6554 elsiocb = lpfc_prep_els_iocb(vport, 0, cmdsize, oldiocb->retry, ndlp, in lpfc_els_rsp_rpl_acc()
6575 rpl_rsp.port_num_blk.portID = be32_to_cpu(vport->fc_myDID); in lpfc_els_rsp_rpl_acc()
6576 memcpy(&rpl_rsp.port_num_blk.portName, &vport->fc_portname, in lpfc_els_rsp_rpl_acc()
6580 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rsp_rpl_acc()
6614 lpfc_els_rcv_rpl(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_rpl() argument
6631 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_els_rcv_rpl()
6650 lpfc_els_rsp_rpl_acc(vport, cmdsize, cmdiocb, ndlp); in lpfc_els_rcv_rpl()
6680 lpfc_els_rcv_farp(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_farp() argument
6697 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_farp()
6707 if (memcmp(&fp->RportName, &vport->fc_portname, in lpfc_els_rcv_farp()
6714 if (memcmp(&fp->RnodeName, &vport->fc_nodename, in lpfc_els_rcv_farp()
6725 lpfc_nlp_set_state(vport, ndlp, in lpfc_els_rcv_farp()
6727 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_els_rcv_farp()
6732 lpfc_issue_els_farpr(vport, did, 0); in lpfc_els_rcv_farp()
6753 lpfc_els_rcv_farpr(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_farpr() argument
6768 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_farpr()
6771 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_els_rcv_farpr()
6796 lpfc_els_rcv_fan(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb, in lpfc_els_rcv_fan() argument
6799 struct lpfc_hba *phba = vport->phba; in lpfc_els_rcv_fan()
6803 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, "0265 FAN received\n"); in lpfc_els_rcv_fan()
6807 if ((vport == phba->pport) && in lpfc_els_rcv_fan()
6808 (vport->port_state == LPFC_LOCAL_CFG_LINK)) { in lpfc_els_rcv_fan()
6814 lpfc_issue_init_vfi(vport); in lpfc_els_rcv_fan()
6817 vport->fc_myDID = vport->fc_prevDID; in lpfc_els_rcv_fan()
6819 lpfc_issue_fabric_reglogin(vport); in lpfc_els_rcv_fan()
6821 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_rcv_fan()
6823 vport->fc_prevDID, vport->fc_myDID); in lpfc_els_rcv_fan()
6824 lpfc_issue_reg_vfi(vport); in lpfc_els_rcv_fan()
6844 struct lpfc_vport *vport = (struct lpfc_vport *) ptr; in lpfc_els_timeout() local
6845 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout()
6849 spin_lock_irqsave(&vport->work_port_lock, iflag); in lpfc_els_timeout()
6850 tmo_posted = vport->work_port_events & WORKER_ELS_TMO; in lpfc_els_timeout()
6851 if ((!tmo_posted) && (!(vport->load_flag & FC_UNLOADING))) in lpfc_els_timeout()
6852 vport->work_port_events |= WORKER_ELS_TMO; in lpfc_els_timeout()
6853 spin_unlock_irqrestore(&vport->work_port_lock, iflag); in lpfc_els_timeout()
6855 if ((!tmo_posted) && (!(vport->load_flag & FC_UNLOADING))) in lpfc_els_timeout()
6871 lpfc_els_timeout_handler(struct lpfc_vport *vport) in lpfc_els_timeout_handler() argument
6873 struct lpfc_hba *phba = vport->phba; in lpfc_els_timeout_handler()
6908 if (piocb->vport != vport) in lpfc_els_timeout_handler()
6933 ndlp = __lpfc_findnode_rpi(vport, cmd->ulpContext); in lpfc_els_timeout_handler()
6945 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_timeout_handler()
6957 mod_timer(&vport->els_tmofunc, in lpfc_els_timeout_handler()
6982 lpfc_els_flush_cmd(struct lpfc_vport *vport) in lpfc_els_flush_cmd() argument
6985 struct lpfc_hba *phba = vport->phba; in lpfc_els_flush_cmd()
6990 lpfc_fabric_abort_vport(vport); in lpfc_els_flush_cmd()
7005 if (piocb->vport != vport) in lpfc_els_flush_cmd()
7020 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_flush_cmd()
7042 if (piocb->vport != vport) in lpfc_els_flush_cmd()
7079 struct lpfc_vport *vport; in lpfc_els_flush_all_cmd() local
7080 list_for_each_entry(vport, &phba->port_list, listentry) in lpfc_els_flush_all_cmd()
7081 lpfc_els_flush_cmd(vport); in lpfc_els_flush_all_cmd()
7100 struct lpfc_vport *vport = cmdiocbp->vport; in lpfc_send_els_failure_event() local
7101 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_send_els_failure_event()
7163 lpfc_send_els_event(struct lpfc_vport *vport, in lpfc_send_els_event() argument
7169 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_send_els_event()
7174 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_send_els_event()
7184 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_send_els_event()
7249 struct lpfc_vport *vport, struct lpfc_iocbq *elsiocb) in lpfc_els_unsol_buffer() argument
7259 if (!vport || !(elsiocb->context2)) in lpfc_els_unsol_buffer()
7270 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7277 if (lpfc_els_chk_latt(vport)) in lpfc_els_unsol_buffer()
7281 if (vport->load_flag & FC_UNLOADING) in lpfc_els_unsol_buffer()
7285 if ((vport->fc_flag & FC_DISC_DELAYED) && in lpfc_els_unsol_buffer()
7289 ndlp = lpfc_findnode_did(vport, did); in lpfc_els_unsol_buffer()
7296 lpfc_nlp_init(vport, ndlp, did); in lpfc_els_unsol_buffer()
7297 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_els_unsol_buffer()
7302 ndlp = lpfc_enable_node(vport, ndlp, in lpfc_els_unsol_buffer()
7306 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_els_unsol_buffer()
7315 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_els_unsol_buffer()
7325 shost = lpfc_shost_from_vport(vport); in lpfc_els_unsol_buffer()
7334 elsiocb->vport = vport; in lpfc_els_unsol_buffer()
7340 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_unsol_buffer()
7343 cmd, did, vport->port_state, vport->fc_flag, in lpfc_els_unsol_buffer()
7344 vport->fc_myDID, vport->fc_prevDID); in lpfc_els_unsol_buffer()
7347 if ((vport->port_state < LPFC_FABRIC_CFG_LINK) && in lpfc_els_unsol_buffer()
7356 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7358 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7364 vport->fc_prevDID = vport->fc_myDID; in lpfc_els_unsol_buffer()
7369 vport->fc_myDID = elsiocb->iocb.un.rcvels.parmRo; in lpfc_els_unsol_buffer()
7370 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_els_unsol_buffer()
7372 "%x\n", vport->fc_myDID, in lpfc_els_unsol_buffer()
7373 vport->fc_prevDID); in lpfc_els_unsol_buffer()
7376 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
7379 if (vport->fc_flag & FC_DISC_DELAYED) { in lpfc_els_unsol_buffer()
7384 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
7397 lpfc_disc_state_machine(vport, ndlp, elsiocb, in lpfc_els_unsol_buffer()
7402 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7404 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7407 lpfc_els_rcv_flogi(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7412 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7414 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7417 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
7418 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
7423 lpfc_disc_state_machine(vport, ndlp, elsiocb, NLP_EVT_RCV_LOGO); in lpfc_els_unsol_buffer()
7426 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7428 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7431 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
7432 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
7437 lpfc_disc_state_machine(vport, ndlp, elsiocb, NLP_EVT_RCV_PRLO); in lpfc_els_unsol_buffer()
7441 lpfc_els_rcv_lcb(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7445 lpfc_els_rcv_rdp(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7449 lpfc_els_rcv_rscn(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7454 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7456 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7458 lpfc_send_els_event(vport, ndlp, payload); in lpfc_els_unsol_buffer()
7460 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
7465 lpfc_disc_state_machine(vport, ndlp, elsiocb, in lpfc_els_unsol_buffer()
7469 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7471 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7474 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
7479 lpfc_disc_state_machine(vport, ndlp, elsiocb, in lpfc_els_unsol_buffer()
7483 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7485 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7488 lpfc_els_rcv_farpr(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7491 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7493 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7496 lpfc_els_rcv_farp(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7499 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7501 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7504 lpfc_els_rcv_fan(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7507 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7509 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7512 if (vport->port_state < LPFC_DISC_AUTH) { in lpfc_els_unsol_buffer()
7517 lpfc_disc_state_machine(vport, ndlp, elsiocb, NLP_EVT_RCV_PRLI); in lpfc_els_unsol_buffer()
7520 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7522 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7525 lpfc_els_rcv_lirr(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7530 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7532 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7535 lpfc_els_rcv_rls(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7540 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7542 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7545 lpfc_els_rcv_rps(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7550 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7552 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7555 lpfc_els_rcv_rpl(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7560 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7562 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7565 lpfc_els_rcv_rnid(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7570 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7572 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7574 lpfc_els_rcv_rtv(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7579 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7581 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7584 lpfc_els_rcv_rrq(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7589 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7591 did, vport->port_state, ndlp->nlp_flag); in lpfc_els_unsol_buffer()
7594 lpfc_els_rcv_echo(vport, elsiocb, ndlp); in lpfc_els_unsol_buffer()
7604 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_UNSOL, in lpfc_els_unsol_buffer()
7606 cmd, did, vport->port_state); in lpfc_els_unsol_buffer()
7613 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_unsol_buffer()
7627 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, elsiocb, ndlp, in lpfc_els_unsol_buffer()
7636 if (vport && !(vport->load_flag & FC_UNLOADING)) in lpfc_els_unsol_buffer()
7637 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_els_unsol_buffer()
7660 struct lpfc_vport *vport = phba->pport; in lpfc_els_unsol_event() local
7686 vport = phba->pport; in lpfc_els_unsol_event()
7688 vport = lpfc_find_vport_by_vpid(phba, in lpfc_els_unsol_event()
7710 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
7724 lpfc_els_unsol_buffer(phba, pring, vport, elsiocb); in lpfc_els_unsol_event()
7747 lpfc_do_scr_ns_plogi(struct lpfc_hba *phba, struct lpfc_vport *vport) in lpfc_do_scr_ns_plogi() argument
7750 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_do_scr_ns_plogi()
7758 if (vport->fc_flag & FC_DISC_DELAYED) { in lpfc_do_scr_ns_plogi()
7763 mod_timer(&vport->delayed_disc_tmo, in lpfc_do_scr_ns_plogi()
7769 ndlp = lpfc_findnode_did(vport, NameServer_DID); in lpfc_do_scr_ns_plogi()
7774 lpfc_disc_start(vport); in lpfc_do_scr_ns_plogi()
7777 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_do_scr_ns_plogi()
7778 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_do_scr_ns_plogi()
7782 lpfc_nlp_init(vport, ndlp, NameServer_DID); in lpfc_do_scr_ns_plogi()
7784 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_do_scr_ns_plogi()
7787 lpfc_disc_start(vport); in lpfc_do_scr_ns_plogi()
7790 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_do_scr_ns_plogi()
7791 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_do_scr_ns_plogi()
7798 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_do_scr_ns_plogi()
7800 if (lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0)) { in lpfc_do_scr_ns_plogi()
7801 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_do_scr_ns_plogi()
7802 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_do_scr_ns_plogi()
7807 if (vport->cfg_fdmi_on & LPFC_FDMI_SUPPORT) { in lpfc_do_scr_ns_plogi()
7812 ndlp_fdmi = lpfc_findnode_did(vport, FDMI_DID); in lpfc_do_scr_ns_plogi()
7817 lpfc_nlp_init(vport, ndlp_fdmi, FDMI_DID); in lpfc_do_scr_ns_plogi()
7823 ndlp_fdmi = lpfc_enable_node(vport, in lpfc_do_scr_ns_plogi()
7828 lpfc_nlp_set_state(vport, ndlp_fdmi, in lpfc_do_scr_ns_plogi()
7830 lpfc_issue_els_plogi(vport, ndlp_fdmi->nlp_DID, 0); in lpfc_do_scr_ns_plogi()
7850 struct lpfc_vport *vport = pmb->vport; in lpfc_cmpl_reg_new_vport() local
7851 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_reg_new_vport()
7857 vport->fc_flag &= ~FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_reg_new_vport()
7861 lpfc_printf_vlog(vport, KERN_ERR, LOG_MBOX, in lpfc_cmpl_reg_new_vport()
7874 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_cmpl_reg_new_vport()
7876 vport->fc_flag &= ~(FC_FABRIC | FC_PUBLIC_LOOP); in lpfc_cmpl_reg_new_vport()
7878 lpfc_can_disctmo(vport); in lpfc_cmpl_reg_new_vport()
7883 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_reg_new_vport()
7885 lpfc_init_vpi(phba, pmb, vport->vpi); in lpfc_cmpl_reg_new_vport()
7886 pmb->vport = vport; in lpfc_cmpl_reg_new_vport()
7891 lpfc_printf_vlog(vport, in lpfc_cmpl_reg_new_vport()
7903 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_reg_new_vport()
7904 lpfc_mbx_unreg_vpi(vport); in lpfc_cmpl_reg_new_vport()
7906 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_reg_new_vport()
7908 if (vport->port_type == LPFC_PHYSICAL_PORT in lpfc_cmpl_reg_new_vport()
7909 && !(vport->fc_flag & FC_LOGO_RCVD_DID_CHNG)) in lpfc_cmpl_reg_new_vport()
7910 lpfc_issue_init_vfi(vport); in lpfc_cmpl_reg_new_vport()
7912 lpfc_initial_fdisc(vport); in lpfc_cmpl_reg_new_vport()
7917 vport->vpi_state |= LPFC_VPI_REGISTERED; in lpfc_cmpl_reg_new_vport()
7919 if (vport == phba->pport) { in lpfc_cmpl_reg_new_vport()
7921 lpfc_issue_fabric_reglogin(vport); in lpfc_cmpl_reg_new_vport()
7927 if (vport->port_state != LPFC_FDISC) in lpfc_cmpl_reg_new_vport()
7929 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
7932 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_reg_new_vport()
7954 lpfc_register_new_vport(struct lpfc_hba *phba, struct lpfc_vport *vport, in lpfc_register_new_vport() argument
7957 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_register_new_vport()
7962 lpfc_reg_vpi(vport, mbox); in lpfc_register_new_vport()
7963 mbox->vport = vport; in lpfc_register_new_vport()
7974 lpfc_printf_vlog(vport, KERN_ERR, LOG_MBOX, in lpfc_register_new_vport()
7979 lpfc_printf_vlog(vport, KERN_ERR, LOG_MBOX, in lpfc_register_new_vport()
7986 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_register_new_vport()
7988 vport->fc_flag &= ~FC_VPORT_NEEDS_REG_VPI; in lpfc_register_new_vport()
8103 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_fdisc() local
8104 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_fdisc()
8114 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_fdisc()
8117 vport->fc_prevDID); in lpfc_cmpl_els_fdisc()
8123 lpfc_set_disctmo(piocb->vport); in lpfc_cmpl_els_fdisc()
8126 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_fdisc()
8128 irsp->ulpStatus, irsp->un.ulpWord[4], vport->fc_prevDID); in lpfc_cmpl_els_fdisc()
8141 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_cmpl_els_fdisc()
8147 vport->fc_flag &= ~FC_VPORT_CVL_RCVD; in lpfc_cmpl_els_fdisc()
8148 vport->fc_flag &= ~FC_VPORT_LOGO_RCVD; in lpfc_cmpl_els_fdisc()
8149 vport->fc_flag |= FC_FABRIC; in lpfc_cmpl_els_fdisc()
8150 if (vport->phba->fc_topology == LPFC_TOPOLOGY_LOOP) in lpfc_cmpl_els_fdisc()
8151 vport->fc_flag |= FC_PUBLIC_LOOP; in lpfc_cmpl_els_fdisc()
8154 vport->fc_myDID = irsp->un.ulpWord[4] & Mask_DID; in lpfc_cmpl_els_fdisc()
8155 lpfc_vport_set_state(vport, FC_VPORT_ACTIVE); in lpfc_cmpl_els_fdisc()
8160 fabric_param_changed = lpfc_check_clean_addr_bit(vport, sp); in lpfc_cmpl_els_fdisc()
8161 memcpy(&vport->fabric_portname, &sp->portName, in lpfc_cmpl_els_fdisc()
8163 memcpy(&vport->fabric_nodename, &sp->nodeName, in lpfc_cmpl_els_fdisc()
8166 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_fdisc()
8172 &vport->fc_nodes, nlp_listp) { in lpfc_cmpl_els_fdisc()
8180 lpfc_unreg_rpi(vport, np); in lpfc_cmpl_els_fdisc()
8182 lpfc_cleanup_pending_mbox(vport); in lpfc_cmpl_els_fdisc()
8185 lpfc_sli4_unreg_all_rpis(vport); in lpfc_cmpl_els_fdisc()
8187 lpfc_mbx_unreg_vpi(vport); in lpfc_cmpl_els_fdisc()
8189 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; in lpfc_cmpl_els_fdisc()
8191 vport->fc_flag |= FC_VPORT_NEEDS_INIT_VPI; in lpfc_cmpl_els_fdisc()
8193 vport->fc_flag |= FC_LOGO_RCVD_DID_CHNG; in lpfc_cmpl_els_fdisc()
8196 !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { in lpfc_cmpl_els_fdisc()
8201 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
8205 if (vport->fc_flag & FC_VPORT_NEEDS_INIT_VPI) in lpfc_cmpl_els_fdisc()
8206 lpfc_issue_init_vpi(vport); in lpfc_cmpl_els_fdisc()
8207 else if (vport->fc_flag & FC_VPORT_NEEDS_REG_VPI) in lpfc_cmpl_els_fdisc()
8208 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_cmpl_els_fdisc()
8210 lpfc_do_scr_ns_plogi(phba, vport); in lpfc_cmpl_els_fdisc()
8213 if (vport->fc_vport->vport_state != FC_VPORT_NO_FABRIC_RSCS) in lpfc_cmpl_els_fdisc()
8214 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_cmpl_els_fdisc()
8216 lpfc_can_disctmo(vport); in lpfc_cmpl_els_fdisc()
8243 lpfc_issue_els_fdisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_issue_els_fdisc() argument
8246 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_fdisc()
8255 vport->port_state = LPFC_FDISC; in lpfc_issue_els_fdisc()
8256 vport->fc_myDID = 0; in lpfc_issue_els_fdisc()
8258 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp, did, in lpfc_issue_els_fdisc()
8261 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_els_fdisc()
8262 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_issue_els_fdisc()
8283 memcpy(pcmd, &vport->phba->pport->fc_sparam, sizeof(struct serv_parm)); in lpfc_issue_els_fdisc()
8297 memcpy(pcmd, &vport->fc_portname, 8); in lpfc_issue_els_fdisc()
8300 memcpy(pcmd, &vport->fc_nodename, 8); in lpfc_issue_els_fdisc()
8302 lpfc_set_disctmo(vport); in lpfc_issue_els_fdisc()
8307 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_fdisc()
8314 lpfc_vport_set_state(vport, FC_VPORT_FAILED); in lpfc_issue_els_fdisc()
8315 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, in lpfc_issue_els_fdisc()
8319 lpfc_vport_set_state(vport, FC_VPORT_INITIALIZING); in lpfc_issue_els_fdisc()
8341 struct lpfc_vport *vport = cmdiocb->vport; in lpfc_cmpl_els_npiv_logo() local
8344 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_cmpl_els_npiv_logo()
8348 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_cmpl_els_npiv_logo()
8353 vport->unreg_vpi_cmpl = VPORT_ERROR; in lpfc_cmpl_els_npiv_logo()
8359 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, in lpfc_cmpl_els_npiv_logo()
8363 irsp->ulpTimeout, vport->num_disc_nodes); in lpfc_cmpl_els_npiv_logo()
8367 vport->fc_flag &= ~FC_NDISC_ACTIVE; in lpfc_cmpl_els_npiv_logo()
8368 vport->fc_flag &= ~FC_FABRIC; in lpfc_cmpl_els_npiv_logo()
8370 lpfc_can_disctmo(vport); in lpfc_cmpl_els_npiv_logo()
8391 lpfc_issue_els_npiv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_issue_els_npiv_logo() argument
8393 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); in lpfc_issue_els_npiv_logo()
8394 struct lpfc_hba *phba = vport->phba; in lpfc_issue_els_npiv_logo()
8400 elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, 0, ndlp, ndlp->nlp_DID, in lpfc_issue_els_npiv_logo()
8410 *((uint32_t *) (pcmd)) = be32_to_cpu(vport->fc_myDID); in lpfc_issue_els_npiv_logo()
8412 memcpy(pcmd, &vport->fc_portname, sizeof(struct lpfc_name)); in lpfc_issue_els_npiv_logo()
8414 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_els_npiv_logo()
8497 lpfc_debugfs_disc_trc(iocb->vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_resume_fabric_iocbs()
8499 iocb->vport->port_state, 0, 0); in lpfc_resume_fabric_iocbs()
8667 lpfc_debugfs_disc_trc(iocb->vport, LPFC_DISC_TRC_ELS_CMD, in lpfc_issue_fabric_iocb()
8669 iocb->vport->port_state, 0, 0); in lpfc_issue_fabric_iocb()
8699 static void lpfc_fabric_abort_vport(struct lpfc_vport *vport) in lpfc_fabric_abort_vport() argument
8702 struct lpfc_hba *phba = vport->phba; in lpfc_fabric_abort_vport()
8709 if (piocb->vport != vport) in lpfc_fabric_abort_vport()
8786 lpfc_sli4_vport_delete_els_xri_aborted(struct lpfc_vport *vport) in lpfc_sli4_vport_delete_els_xri_aborted() argument
8788 struct lpfc_hba *phba = vport->phba; in lpfc_sli4_vport_delete_els_xri_aborted()
8796 if (sglq_entry->ndlp && sglq_entry->ndlp->vport == vport) in lpfc_sli4_vport_delete_els_xri_aborted()
8879 lpfc_sli_abts_recover_port(struct lpfc_vport *vport, in lpfc_sli_abts_recover_port() argument
8886 shost = lpfc_shost_from_vport(vport); in lpfc_sli_abts_recover_port()
8887 phba = vport->phba; in lpfc_sli_abts_recover_port()
8899 vport->vpi, ndlp->nlp_rpi, ndlp->nlp_state, in lpfc_sli_abts_recover_port()
8908 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_sli_abts_recover_port()
8909 lpfc_nlp_set_state(vport, ndlp, NLP_STE_LOGO_ISSUE); in lpfc_sli_abts_recover_port()