Lines Matching refs:vport
157 struct lpfc_vport *vport = ndlp->vport;
158 struct lpfc_hba *phba = vport->phba;
241 cmdiocbq->vport = vport;
267 lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS,
269 rc, vport->fc_flag);
286 struct lpfc_vport *vport = ctiocbq->vport;
294 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
300 /* Ignore traffic received during vport shutdown */
301 if (vport->fc_flag & FC_UNLOADING)
304 ndlp = lpfc_findnode_did(vport, did);
306 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
315 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
576 * @vport: pointer to a host virtual N_Port data structure.
586 lpfc_gen_req(struct lpfc_vport *vport, struct lpfc_dmabuf *bmp,
593 struct lpfc_hba *phba = vport->phba;
628 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
632 vport->port_state);
635 geniocb->vport = vport;
655 * @vport: pointer to a host virtual N_Port data structure.
664 lpfc_ct_cmd(struct lpfc_vport *vport, struct lpfc_dmabuf *inmp,
670 struct lpfc_hba *phba = vport->phba;
689 status = lpfc_gen_req(vport, bmp, inmp, outmp, cmpl, ndlp,
715 lpfc_prep_node_fc4type(struct lpfc_vport *vport, uint32_t Did, uint8_t fc4_type)
719 if ((vport->port_type != LPFC_NPIV_PORT) ||
720 !(vport->ct_flags & FC_CT_RFF_ID) || !vport->cfg_restrict_login) {
722 ndlp = lpfc_setup_disc_node(vport, Did);
725 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
727 Did, ndlp->nlp_flag, vport->fc_flag);
736 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
740 ndlp->nlp_state, vport->fc_flag,
741 vport->fc_rscn_id_cnt);
749 lpfc_nlp_set_state(vport, ndlp,
753 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
755 Did, vport->fc_flag, vport->fc_rscn_id_cnt);
757 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
760 Did, vport->fc_flag,
761 vport->fc_rscn_id_cnt, ndlp);
764 if (!(vport->fc_flag & FC_RSCN_MODE) ||
765 lpfc_rscn_payload_check(vport, Did)) {
766 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
768 Did, vport->fc_flag, vport->fc_rscn_id_cnt);
774 ndlp = lpfc_findnode_did(vport, Did);
782 lpfc_setup_disc_node(vport, Did);
783 } else if (lpfc_ns_cmd(vport, SLI_CTNS_GFF_ID,
785 vport->num_disc_nodes++;
787 lpfc_setup_disc_node(vport, Did);
789 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
791 Did, vport->fc_flag, vport->fc_rscn_id_cnt);
793 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
796 vport->fc_flag,
797 vport->fc_rscn_id_cnt);
803 lpfc_ns_rsp_audit_did(struct lpfc_vport *vport, uint32_t Did, uint8_t fc4_type)
805 struct lpfc_hba *phba = vport->phba;
813 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
822 if (Did != vport->fc_myDID &&
824 vport->cfg_peer_port_login)) {
827 lpfc_prep_node_fc4type(vport, Did, fc4_type);
831 list_for_each_entry(ndlp, &vport->fc_nodes, nlp_listp) {
846 lpfc_ns_rsp(struct lpfc_vport *vport, struct lpfc_dmabuf *mp, uint8_t fc4_type,
858 lpfc_set_disctmo(vport);
859 vport->num_disc_nodes = 0;
860 vport->fc_ns_retry = 0;
881 lpfc_ns_rsp_audit_did(vport, Did, fc4_type);
895 if (vport->phba->nvmet_support) {
896 list_for_each_entry(ndlp, &vport->fc_nodes, nlp_listp) {
899 lpfc_disc_state_machine(vport, ndlp, NULL,
916 struct lpfc_vport *vport = cmdiocb->vport;
917 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
935 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
937 ulp_status, ulp_word4, vport->fc_ns_retry);
941 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
946 /* Don't bother processing response if vport is being torn down. */
947 if (vport->load_flag & FC_UNLOADING) {
948 if (vport->fc_flag & FC_RSCN_MODE)
949 lpfc_els_flush_rscn(vport);
953 if (lpfc_els_chk_latt(vport)) {
954 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
956 if (vport->fc_flag & FC_RSCN_MODE)
957 lpfc_els_flush_rscn(vport);
958 lpfc_vport_set_state(vport, FC_VPORT_FAILED);
961 if (lpfc_error_lost_link(vport, ulp_status, ulp_word4)) {
962 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
966 ulp_status, ulp_word4, vport->fc_flag,
967 vport->port_state, vport->gidft_inp);
968 if (vport->fc_flag & FC_RSCN_MODE)
969 lpfc_els_flush_rscn(vport);
970 if (vport->gidft_inp)
971 vport->gidft_inp--;
976 if (vport->fc_flag & FC_RSCN_DEFERRED) {
977 vport->fc_flag &= ~FC_RSCN_DEFERRED;
983 if (vport->gidft_inp)
984 vport->gidft_inp--;
990 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
992 vport->fc_flag, vport->fc_rscn_id_cnt);
993 lpfc_els_handle_rscn(vport);
1001 if (vport->fc_ns_retry < LPFC_MAX_NS_RETRY) {
1005 vport->fc_ns_retry++;
1007 type = lpfc_get_gidft_type(vport, cmdiocb);
1012 rc = lpfc_ns_cmd(vport, SLI_CTNS_GID_FT,
1013 vport->fc_ns_retry, type);
1017 if (vport->gidft_inp)
1018 vport->gidft_inp--;
1021 if (vport->fc_flag & FC_RSCN_MODE)
1022 lpfc_els_flush_rscn(vport);
1023 lpfc_vport_set_state(vport, FC_VPORT_FAILED);
1024 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
1026 ulp_status, vport->fc_ns_retry);
1033 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1036 vport->fc_flag,
1038 vport->num_disc_nodes,
1039 vport->gidft_inp,
1042 lpfc_ns_rsp(vport,
1051 lpfc_printf_vlog(vport, KERN_INFO,
1058 vport->fc_flag);
1060 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
1066 lpfc_printf_vlog(vport, KERN_INFO,
1073 vport->fc_flag);
1075 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
1085 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
1091 vport->fc_flag);
1093 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
1099 if (vport->gidft_inp)
1100 vport->gidft_inp--;
1103 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1105 vport->gidft_inp, vport->num_disc_nodes);
1108 if ((vport->num_disc_nodes == 0) &&
1109 (vport->gidft_inp == 0)) {
1115 if (vport->port_state >= LPFC_DISC_AUTH) {
1116 if (vport->fc_flag & FC_RSCN_MODE) {
1117 lpfc_els_flush_rscn(vport);
1119 vport->fc_flag |= FC_RSCN_MODE; /* RSCN still */
1123 lpfc_els_flush_rscn(vport);
1126 lpfc_disc_start(vport);
1138 struct lpfc_vport *vport = cmdiocb->vport;
1139 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
1157 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
1160 vport->fc_ns_retry);
1164 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1169 /* Don't bother processing response if vport is being torn down. */
1170 if (vport->load_flag & FC_UNLOADING) {
1171 if (vport->fc_flag & FC_RSCN_MODE)
1172 lpfc_els_flush_rscn(vport);
1176 if (lpfc_els_chk_latt(vport)) {
1177 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1179 if (vport->fc_flag & FC_RSCN_MODE)
1180 lpfc_els_flush_rscn(vport);
1181 lpfc_vport_set_state(vport, FC_VPORT_FAILED);
1184 if (lpfc_error_lost_link(vport, ulp_status, ulp_word4)) {
1185 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1189 ulp_status, ulp_word4, vport->fc_flag,
1190 vport->port_state, vport->gidft_inp);
1191 if (vport->fc_flag & FC_RSCN_MODE)
1192 lpfc_els_flush_rscn(vport);
1193 if (vport->gidft_inp)
1194 vport->gidft_inp--;
1199 if (vport->fc_flag & FC_RSCN_DEFERRED) {
1200 vport->fc_flag &= ~FC_RSCN_DEFERRED;
1206 if (vport->gidft_inp)
1207 vport->gidft_inp--;
1213 lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
1215 vport->fc_flag, vport->fc_rscn_id_cnt);
1216 lpfc_els_handle_rscn(vport);
1224 if (vport->fc_ns_retry < LPFC_MAX_NS_RETRY) {
1228 vport->fc_ns_retry++;
1231 rc = lpfc_ns_cmd(vport, SLI_CTNS_GID_PT,
1232 vport->fc_ns_retry, GID_PT_N_PORT);
1236 if (vport->gidft_inp)
1237 vport->gidft_inp--;
1240 if (vport->fc_flag & FC_RSCN_MODE)
1241 lpfc_els_flush_rscn(vport);
1242 lpfc_vport_set_state(vport, FC_VPORT_FAILED);
1243 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
1245 ulp_status, vport->fc_ns_retry);
1252 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1255 vport->fc_flag,
1257 vport->num_disc_nodes,
1258 vport->gidft_inp,
1261 lpfc_ns_rsp(vport,
1271 vport, KERN_INFO, LOG_DISCOVERY,
1277 vport->fc_flag);
1280 vport, LPFC_DISC_TRC_CT,
1287 vport, KERN_INFO, LOG_DISCOVERY,
1293 vport->fc_flag);
1296 vport, LPFC_DISC_TRC_CT,
1304 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
1310 vport->fc_flag);
1313 vport, LPFC_DISC_TRC_CT,
1319 if (vport->gidft_inp)
1320 vport->gidft_inp--;
1323 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1325 vport->gidft_inp, vport->num_disc_nodes);
1328 if ((vport->num_disc_nodes == 0) &&
1329 (vport->gidft_inp == 0)) {
1335 if (vport->port_state >= LPFC_DISC_AUTH) {
1336 if (vport->fc_flag & FC_RSCN_MODE) {
1337 lpfc_els_flush_rscn(vport);
1339 vport->fc_flag |= FC_RSCN_MODE; /* RSCN still */
1342 lpfc_els_flush_rscn(vport);
1346 lpfc_disc_start(vport);
1357 struct lpfc_vport *vport = cmdiocb->vport;
1358 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
1371 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
1377 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1387 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1398 lpfc_printf_vlog(vport, KERN_INFO,
1403 vport->fc_rscn_id_cnt);
1435 rc = lpfc_ns_cmd(vport, SLI_CTNS_GFF_ID,
1446 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
1450 vport->fc_flag, vport->fc_rscn_id_cnt);
1454 ndlp = lpfc_setup_disc_node(vport, did);
1456 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1459 did, ndlp->nlp_flag, vport->fc_flag,
1460 vport->fc_rscn_id_cnt);
1462 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1465 vport->fc_flag, vport->fc_rscn_id_cnt);
1469 if (vport->num_disc_nodes)
1470 vport->num_disc_nodes--;
1472 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1474 vport->gidft_inp, vport->num_disc_nodes);
1476 if (vport->num_disc_nodes == 0) {
1482 if (vport->port_state >= LPFC_DISC_AUTH) {
1483 if (vport->fc_flag & FC_RSCN_MODE) {
1484 lpfc_els_flush_rscn(vport);
1486 vport->fc_flag |= FC_RSCN_MODE; /* RSCN still */
1490 lpfc_els_flush_rscn(vport);
1492 lpfc_disc_start(vport);
1506 struct lpfc_vport *vport = cmdiocb->vport;
1520 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
1526 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1537 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1550 ndlp = lpfc_findnode_did(vport, did);
1560 lpfc_printf_vlog(vport, KERN_INFO,
1579 lpfc_nlp_set_state(vport, ndlp,
1581 lpfc_issue_els_prli(vport, ndlp, 0);
1585 lpfc_printf_vlog(vport, KERN_INFO,
1592 lpfc_issue_els_logo(vport, ndlp, 0);
1594 lpfc_nlp_set_state(vport, ndlp,
1599 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
1611 struct lpfc_vport *vport = cmdiocb->vport;
1635 latt = lpfc_els_chk_latt(vport);
1638 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1645 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
1650 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
1666 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
1668 rc = lpfc_ns_cmd(vport, cmdcode, retry, 0);
1683 struct lpfc_vport *vport = cmdiocb->vport;
1694 vport->ct_flags |= FC_CT_RFT_ID;
1704 struct lpfc_vport *vport = cmdiocb->vport;
1715 vport->ct_flags |= FC_CT_RNN_ID;
1725 struct lpfc_vport *vport = cmdiocb->vport;
1736 vport->ct_flags |= FC_CT_RSPN_ID;
1746 struct lpfc_vport *vport = cmdiocb->vport;
1757 vport->ct_flags |= FC_CT_RSNN_NN;
1767 struct lpfc_vport *vport = cmdiocb->vport;
1770 vport->ct_flags = 0;
1779 struct lpfc_vport *vport = cmdiocb->vport;
1790 vport->ct_flags |= FC_CT_RFF_ID;
1802 lpfc_vport_symbolic_port_name(struct lpfc_vport *vport, char *symbol,
1812 n = scnprintf(symbol, size, "%d", vport->phba->brd_no);
1818 lpfc_vport_symbolic_node_name(struct lpfc_vport *vport, char *symbol,
1826 scnprintf(tmp, sizeof(tmp), "Emulex %s", vport->phba->ModelName);
1830 lpfc_decode_firmware_rev(vport->phba, fwrev, 0);
1839 scnprintf(tmp, sizeof(tmp), " HN:%s", vport->phba->os_host_name);
1853 lpfc_find_map_node(struct lpfc_vport *vport)
1859 shost = lpfc_shost_from_vport(vport);
1861 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) {
1877 lpfc_get_gidft_type(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb)
1901 lpfc_ns_cmd(struct lpfc_vport *vport, int cmdcode,
1905 struct lpfc_hba *phba = vport->phba;
1916 ndlp = lpfc_findnode_did(vport, NameServer_DID);
1952 lpfc_printf_vlog(vport, KERN_INFO ,LOG_DISCOVERY,
1954 cmdcode, vport->fc_flag, vport->fc_rscn_id_cnt,
1999 if (vport->port_state < LPFC_NS_QRY)
2000 vport->port_state = LPFC_NS_QRY;
2001 lpfc_set_disctmo(vport);
2011 if (vport->port_state < LPFC_NS_QRY)
2012 vport->port_state = LPFC_NS_QRY;
2013 lpfc_set_disctmo(vport);
2033 vport->ct_flags &= ~FC_CT_RFT_ID;
2036 CtReq->un.rft.port_id = cpu_to_be32(vport->fc_myDID);
2044 if (vport->cfg_enable_fc4_type == LPFC_ENABLE_BOTH ||
2045 vport->cfg_enable_fc4_type == LPFC_ENABLE_FCP)
2049 if (vport->cfg_enable_fc4_type == LPFC_ENABLE_BOTH ||
2050 vport->cfg_enable_fc4_type == LPFC_ENABLE_NVME)
2054 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
2067 vport->ct_flags &= ~FC_CT_RNN_ID;
2070 CtReq->un.rnn.PortId = cpu_to_be32(vport->fc_myDID);
2071 memcpy(CtReq->un.rnn.wwnn, &vport->fc_nodename,
2077 vport->ct_flags &= ~FC_CT_RSPN_ID;
2080 CtReq->un.rspn.PortId = cpu_to_be32(vport->fc_myDID);
2083 lpfc_vport_symbolic_port_name(vport,
2088 vport->ct_flags &= ~FC_CT_RSNN_NN;
2091 memcpy(CtReq->un.rsnn.wwnn, &vport->fc_nodename,
2095 lpfc_vport_symbolic_node_name(vport,
2103 CtReq->un.da_id.port_id = cpu_to_be32(vport->fc_myDID);
2107 vport->ct_flags &= ~FC_CT_RFF_ID;
2110 CtReq->un.rff.PortId = cpu_to_be32(vport->fc_myDID);
2117 if (((vport->cfg_enable_fc4_type == LPFC_ENABLE_BOTH) ||
2118 (vport->cfg_enable_fc4_type == LPFC_ENABLE_NVME)) &&
2120 if ((vport == phba->pport) && phba->nvmet_support) {
2125 lpfc_nvme_update_localport(vport);
2129 } else if (((vport->cfg_enable_fc4_type == LPFC_ENABLE_BOTH) ||
2130 (vport->cfg_enable_fc4_type == LPFC_ENABLE_FCP)) &&
2138 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
2151 if (!lpfc_ct_cmd(vport, mp, bmp, ndlp, cmpl, rsp_size, retry)) {
2153 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
2169 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
2171 cmdcode, rc, vport->fc_flag, vport->fc_rscn_id_cnt);
2188 struct lpfc_vport *vport;
2196 vport = vports[i];
2200 if (vport->ct_flags & FC_CT_RPRT_DEFER) {
2201 vport->ct_flags &= ~FC_CT_RPRT_DEFER;
2202 vport->fdmi_port_mask = mask;
2203 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RPRT, 0);
2223 struct lpfc_vport *vport = cmdiocb->vport;
2235 latt = lpfc_els_chk_latt(vport);
2236 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_CT,
2272 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
2283 ndlp = lpfc_findnode_did(vport, FDMI_DID);
2291 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY | LOG_ELS,
2297 if (vport->fdmi_hba_mask == LPFC_FDMI2_HBA_ATTR) {
2299 vport->fdmi_hba_mask = LPFC_FDMI1_HBA_ATTR;
2304 vport->fdmi_port_mask = LPFC_FDMI1_PORT_ATTR;
2306 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DHBA, 0);
2311 if (vport->port_type != LPFC_PHYSICAL_PORT) {
2316 if (vport->fdmi_port_mask == LPFC_FDMI2_PORT_ATTR) {
2318 vport->fdmi_port_mask = LPFC_FDMI1_PORT_ATTR;
2320 lpfc_fdmi_cmd(vport, ndlp, cmd, 0);
2323 if (vport->fdmi_port_mask == LPFC_FDMI2_SMART_ATTR) {
2324 vport->fdmi_port_mask = LPFC_FDMI2_PORT_ATTR;
2326 lpfc_fdmi_cmd(vport, ndlp, cmd, 0);
2341 if (vport->fdmi_port_mask == LPFC_FDMI2_PORT_ATTR) {
2343 vport->fdmi_hba_mask = LPFC_FDMI1_HBA_ATTR;
2344 vport->fdmi_port_mask = LPFC_FDMI1_PORT_ATTR;
2346 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DHBA, 0);
2349 if (vport->fdmi_port_mask == LPFC_FDMI2_SMART_ATTR) {
2350 vport->fdmi_port_mask = LPFC_FDMI2_PORT_ATTR;
2352 lpfc_fdmi_cmd(vport, ndlp, cmd, 0);
2366 lpfc_fdmi_rprt_defer(phba, vport->fdmi_port_mask);
2368 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RPA, 0);
2372 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DPRT, 0);
2376 if (vport->port_type == LPFC_PHYSICAL_PORT) {
2377 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RHBA, 0);
2383 /* Only issue a RPRT for the vport if the RHBA
2388 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RPRT, 0);
2390 lpfc_printf_vlog(vport, KERN_INFO,
2393 vport->ct_flags |= FC_CT_RPRT_DEFER;
2398 if (vport->port_type == LPFC_PHYSICAL_PORT &&
2402 lpfc_printf_vlog(vport, KERN_INFO,
2416 if (lpfc_fdmi_cmd(vport, ndlp, cmd,
2438 * @vport: pointer to a host virtual N_Port data structure.
2446 lpfc_fdmi_change_check(struct lpfc_vport *vport)
2448 struct lpfc_hba *phba = vport->phba;
2456 if (!(vport->fc_flag & FC_FABRIC))
2459 ndlp = lpfc_findnode_did(vport, FDMI_DID);
2468 lpfc_ns_cmd(vport, SLI_CTNS_RSNN_NN, 0, 0);
2475 if (vport->port_type == LPFC_PHYSICAL_PORT) {
2478 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DHBA, 0);
2483 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DPRT, 0);
2492 if (!(vport->fdmi_port_mask & LPFC_FDMI_PORT_ATTR_num_disc))
2496 cnt = lpfc_find_map_node(vport);
2497 if (cnt == vport->fdmi_num_disc)
2500 if (vport->port_type == LPFC_PHYSICAL_PORT) {
2501 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RPA,
2507 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_RPRT,
2613 lpfc_fdmi_hba_attr_wwnn(struct lpfc_vport *vport, void *attr)
2616 &vport->fc_sparam.nodeName);
2620 lpfc_fdmi_hba_attr_manufacturer(struct lpfc_vport *vport, void *attr)
2630 lpfc_fdmi_hba_attr_sn(struct lpfc_vport *vport, void *attr)
2632 struct lpfc_hba *phba = vport->phba;
2639 lpfc_fdmi_hba_attr_model(struct lpfc_vport *vport, void *attr)
2641 struct lpfc_hba *phba = vport->phba;
2648 lpfc_fdmi_hba_attr_description(struct lpfc_vport *vport, void *attr)
2650 struct lpfc_hba *phba = vport->phba;
2657 lpfc_fdmi_hba_attr_hdw_ver(struct lpfc_vport *vport, void *attr)
2659 struct lpfc_hba *phba = vport->phba;
2669 lpfc_fdmi_hba_attr_drvr_ver(struct lpfc_vport *vport, void *attr)
2676 lpfc_fdmi_hba_attr_rom_ver(struct lpfc_vport *vport, void *attr)
2678 struct lpfc_hba *phba = vport->phba;
2693 lpfc_fdmi_hba_attr_fmw_ver(struct lpfc_vport *vport, void *attr)
2695 struct lpfc_hba *phba = vport->phba;
2704 lpfc_fdmi_hba_attr_os_ver(struct lpfc_vport *vport, void *attr)
2717 lpfc_fdmi_hba_attr_ct_len(struct lpfc_vport *vport, void *attr)
2724 lpfc_fdmi_hba_attr_symbolic_name(struct lpfc_vport *vport, void *attr)
2728 lpfc_vport_symbolic_node_name(vport, buf, sizeof(buf));
2734 lpfc_fdmi_hba_attr_vendor_info(struct lpfc_vport *vport, void *attr)
2740 lpfc_fdmi_hba_attr_num_ports(struct lpfc_vport *vport, void *attr)
2747 lpfc_fdmi_hba_attr_fabric_wwnn(struct lpfc_vport *vport, void *attr)
2750 &vport->fabric_nodename);
2754 lpfc_fdmi_hba_attr_bios_ver(struct lpfc_vport *vport, void *attr)
2756 struct lpfc_hba *phba = vport->phba;
2763 lpfc_fdmi_hba_attr_bios_state(struct lpfc_vport *vport, void *attr)
2770 lpfc_fdmi_hba_attr_vendor_id(struct lpfc_vport *vport, void *attr)
2780 lpfc_fdmi_port_attr_fc4type(struct lpfc_vport *vport, void *attr)
2782 struct lpfc_hba *phba = vport->phba;
2788 if ((phba->sli_rev == LPFC_SLI_REV4) && (vport == phba->pport) &&
2797 lpfc_fdmi_port_attr_support_speed(struct lpfc_vport *vport, void *attr)
2799 struct lpfc_hba *phba = vport->phba;
2873 lpfc_fdmi_port_attr_speed(struct lpfc_vport *vport, void *attr)
2875 struct lpfc_hba *phba = vport->phba;
2938 lpfc_fdmi_port_attr_max_frame(struct lpfc_vport *vport, void *attr)
2940 struct serv_parm *hsp = (struct serv_parm *)&vport->fc_sparam;
2948 lpfc_fdmi_port_attr_os_devname(struct lpfc_vport *vport, void *attr)
2950 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
2960 lpfc_fdmi_port_attr_host_name(struct lpfc_vport *vport, void *attr)
2964 scnprintf(buf, sizeof(buf), "%s", vport->phba->os_host_name);
2970 lpfc_fdmi_port_attr_wwnn(struct lpfc_vport *vport, void *attr)
2973 &vport->fc_sparam.nodeName);
2977 lpfc_fdmi_port_attr_wwpn(struct lpfc_vport *vport, void *attr)
2980 &vport->fc_sparam.portName);
2984 lpfc_fdmi_port_attr_symbolic_name(struct lpfc_vport *vport, void *attr)
2988 lpfc_vport_symbolic_port_name(vport, buf, sizeof(buf));
2994 lpfc_fdmi_port_attr_port_type(struct lpfc_vport *vport, void *attr)
2996 struct lpfc_hba *phba = vport->phba;
3005 lpfc_fdmi_port_attr_class(struct lpfc_vport *vport, void *attr)
3012 lpfc_fdmi_port_attr_fabric_wwpn(struct lpfc_vport *vport, void *attr)
3015 &vport->fabric_portname);
3019 lpfc_fdmi_port_attr_active_fc4type(struct lpfc_vport *vport, void *attr)
3021 struct lpfc_hba *phba = vport->phba;
3027 if (vport == phba->pport &&
3036 lpfc_fdmi_port_attr_port_state(struct lpfc_vport *vport, void *attr)
3043 lpfc_fdmi_port_attr_num_disc(struct lpfc_vport *vport, void *attr)
3045 vport->fdmi_num_disc = lpfc_find_map_node(vport);
3048 vport->fdmi_num_disc);
3052 lpfc_fdmi_port_attr_nportid(struct lpfc_vport *vport, void *attr)
3054 return lpfc_fdmi_set_attr_u32(attr, RPRT_PORT_ID, vport->fc_myDID);
3058 lpfc_fdmi_smart_attr_service(struct lpfc_vport *vport, void *attr)
3065 lpfc_fdmi_smart_attr_guid(struct lpfc_vport *vport, void *attr)
3068 &vport->fc_sparam.nodeName,
3069 &vport->fc_sparam.portName);
3073 lpfc_fdmi_smart_attr_version(struct lpfc_vport *vport, void *attr)
3080 lpfc_fdmi_smart_attr_model(struct lpfc_vport *vport, void *attr)
3082 struct lpfc_hba *phba = vport->phba;
3089 lpfc_fdmi_smart_attr_port_info(struct lpfc_vport *vport, void *attr)
3094 (vport->vpi) ? 2 /* NPIV */ : 1 /* Physical */);
3098 lpfc_fdmi_smart_attr_qos(struct lpfc_vport *vport, void *attr)
3104 lpfc_fdmi_smart_attr_security(struct lpfc_vport *vport, void *attr)
3110 lpfc_fdmi_vendor_attr_mi(struct lpfc_vport *vport, void *attr)
3112 struct lpfc_hba *phba = vport->phba;
3122 (struct lpfc_vport *vport, void *attrbuf) = {
3146 (struct lpfc_vport *vport, void *attrbuf) = {
3176 * @vport: pointer to a host virtual N_Port data structure.
3184 lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
3187 struct lpfc_hba *phba = vport->phba;
3199 int (*func)(struct lpfc_vport *vport, void *attrbuf);
3235 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
3237 cmdcode, new_mask, vport->fdmi_port_mask,
3238 vport->fc_flag, vport->port_state);
3281 mask = vport->fdmi_hba_mask;
3287 addsz = func(vport, ((uint8_t *)rh + size));
3307 if (vport->port_type != LPFC_PHYSICAL_PORT) {
3331 (uint8_t *)&vport->fc_sparam.portName,
3341 mask = vport->fdmi_port_mask;
3347 addsz = func(vport, ((uint8_t *)base + size));
3373 (uint8_t *)&vport->fc_sparam.portName,
3383 if (vport->port_type != LPFC_PHYSICAL_PORT) {
3392 (uint8_t *)&vport->fc_sparam.portName,
3400 lpfc_printf_vlog(vport, KERN_WARNING, LOG_DISCOVERY,
3418 if (!lpfc_ct_cmd(vport, rq, rsp, ndlp, cmpl, rsp_size, 0))
3431 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
3447 struct lpfc_vport *vport = from_timer(vport, t, delayed_disc_tmo);
3448 struct lpfc_hba *phba = vport->phba;
3452 spin_lock_irqsave(&vport->work_port_lock, iflag);
3453 tmo_posted = vport->work_port_events & WORKER_DELAYED_DISC_TMO;
3455 vport->work_port_events |= WORKER_DELAYED_DISC_TMO;
3456 spin_unlock_irqrestore(&vport->work_port_lock, iflag);
3466 * @vport: pointer to a host virtual N_Port data structure.
3468 * This function start nport discovery of the vport.
3471 lpfc_delayed_disc_timeout_handler(struct lpfc_vport *vport)
3473 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
3476 if (!(vport->fc_flag & FC_DISC_DELAYED)) {
3480 vport->fc_flag &= ~FC_DISC_DELAYED;
3483 lpfc_do_scr_ns_plogi(vport->phba, vport);
3576 struct lpfc_vport *vport = cmdiocb->vport;
3593 if (lpfc_els_chk_latt(vport) || get_job_ulpstatus(phba, rspiocb)) {
3600 lpfc_printf_vlog(vport, KERN_DEBUG, LOG_DISCOVERY,
3609 vport->load_flag |= FC_DEREGISTER_ALL_APP_ID;
3617 lpfc_printf_vlog(vport, KERN_DEBUG, LOG_DISCOVERY,
3628 vmp = lpfc_get_vmid_from_hashtable(vport, hash,
3631 write_lock(&vport->vmid_lock);
3635 write_unlock(&vport->vmid_lock);
3637 vport->vmid_flag |= LPFC_VMID_IN_USE;
3639 lpfc_printf_vlog(vport, KERN_DEBUG, LOG_DISCOVERY,
3646 lpfc_printf_vlog(vport, KERN_DEBUG, LOG_DISCOVERY,
3652 lpfc_printf_vlog(vport, KERN_DEBUG, LOG_DISCOVERY,
3654 read_lock(&vport->vmid_lock);
3656 vmp = &vport->vmid[i];
3660 read_unlock(&vport->vmid_lock);
3662 if (!hash_empty(vport->hash_table))
3663 hash_for_each(vport->hash_table, bucket, cur, hnode)
3665 vport->load_flag |= FC_ALLOW_VMID;
3668 lpfc_printf_vlog(vport, KERN_DEBUG, LOG_DISCOVERY,
3678 * @vport: pointer to a host virtual N_Port data structure.
3685 lpfc_vmid_cmd(struct lpfc_vport *vport,
3688 struct lpfc_hba *phba = vport->phba;
3703 ndlp = lpfc_findnode_did(vport, FDMI_DID);
3731 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
3733 vport->fc_flag, vport->port_state, cmdcode);
3750 lpfc_printf_vlog(vport, KERN_DEBUG, LOG_DISCOVERY,
3752 ctreq->un.PortID = cpu_to_be32(vport->fc_myDID);
3764 ctreq->un.PortID = cpu_to_be32(vport->fc_myDID);
3769 lpfc_printf_vlog(vport, KERN_DEBUG, LOG_DISCOVERY,
3771 ctreq->un.PortID = cpu_to_be32(vport->fc_myDID);
3779 write_lock(&vport->vmid_lock);
3781 write_unlock(&vport->vmid_lock);
3786 ctreq->un.PortID = cpu_to_be32(vport->fc_myDID);
3791 lpfc_printf_vlog(vport, KERN_DEBUG, LOG_DISCOVERY,
3808 if (!lpfc_ct_cmd(vport, mp, bmp, ndlp, cmpl, rsp_size, retry))
3822 lpfc_printf_vlog(vport, KERN_DEBUG, LOG_DISCOVERY,