Lines Matching refs:vport

53 inline void lpfc_vport_set_state(struct lpfc_vport *vport,
56 struct fc_vport *fc_vport = vport->fc_vport;
76 vport->port_state = LPFC_VPORT_FAILED;
79 vport->port_state = LPFC_VPORT_UNKNOWN;
118 lpfc_vport_sparm(struct lpfc_hba *phba, struct lpfc_vport *vport)
131 rc = lpfc_read_sparam(phba, pmb, vport->vpi);
144 pmb->vport = vport;
148 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
157 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
169 memcpy(&vport->fc_sparam, mp->virt, sizeof (struct serv_parm));
170 memcpy(&vport->fc_nodename, &vport->fc_sparam.nodeName,
172 memcpy(&vport->fc_portname, &vport->fc_sparam.portName,
207 struct lpfc_vport *vport;
211 list_for_each_entry(vport, &phba->port_list, listentry) {
212 if (vport == new_vport)
215 if (memcmp(&vport->fc_sparam.portName,
228 * @vport: The virtual port for which this call is being executed.
231 * to enforce a synchronous execution of vport
241 static void lpfc_discovery_wait(struct lpfc_vport *vport)
243 struct lpfc_hba *phba = vport->phba;
260 if ((vport->num_disc_nodes > 0) ||
261 (vport->fc_flag & wait_flags) ||
262 ((vport->port_state > LPFC_VPORT_FAILED) &&
263 (vport->port_state < LPFC_VPORT_READY))) {
264 lpfc_printf_vlog(vport, KERN_INFO, LOG_VPORT,
269 vport->port_state, vport->fc_flag,
270 vport->num_disc_nodes,
275 lpfc_printf_vlog(vport, KERN_INFO, LOG_VPORT,
279 vport->port_state, vport->fc_flag,
287 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
290 vport->port_state, vport->fc_flag,
301 struct lpfc_vport *vport = NULL;
345 vport = lpfc_create_port(phba, instance, &fc_vport->dev);
346 if (!vport) {
354 vport->vpi = vpi;
355 lpfc_debugfs_initialize(vport);
357 if ((status = lpfc_vport_sparm(phba, vport))) {
359 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
363 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
369 destroy_port(vport);
373 u64_to_wwn(fc_vport->node_name, vport->fc_nodename.u.wwn);
374 u64_to_wwn(fc_vport->port_name, vport->fc_portname.u.wwn);
376 memcpy(&vport->fc_sparam.portName, vport->fc_portname.u.wwn, 8);
377 memcpy(&vport->fc_sparam.nodeName, vport->fc_nodename.u.wwn, 8);
379 if (!lpfc_valid_wwn_format(phba, &vport->fc_sparam.nodeName, "WWNN") ||
380 !lpfc_valid_wwn_format(phba, &vport->fc_sparam.portName, "WWPN")) {
381 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
385 destroy_port(vport);
390 if (!lpfc_unique_wwpn(phba, vport)) {
391 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
395 destroy_port(vport);
400 /* Create binary sysfs attribute for vport */
401 lpfc_alloc_sysfs_attr(vport);
404 vport->cfg_lun_queue_depth = phba->pport->cfg_lun_queue_depth;
407 vport->cfg_enable_fc4_type = LPFC_ENABLE_FCP;
409 *(struct lpfc_vport **)fc_vport->dd_data = vport;
410 vport->fc_vport = fc_vport;
413 vport->load_flag |= FC_ALLOW_FDMI;
417 vport->fdmi_hba_mask = phba->pport->fdmi_hba_mask;
418 vport->fdmi_port_mask = phba->pport->fdmi_port_mask;
427 rc = lpfc_sli4_init_vpi(vport);
441 vport->fc_flag |= FC_VPORT_NEEDS_INIT_VPI;
442 lpfc_vport_set_state(vport, FC_VPORT_LINKDOWN);
450 lpfc_vport_set_state(vport, FC_VPORT_LINKDOWN);
456 lpfc_vport_set_state(vport, FC_VPORT_DISABLED);
468 lpfc_set_disctmo(vport);
469 lpfc_initial_fdisc(vport);
471 lpfc_vport_set_state(vport, FC_VPORT_NO_FABRIC_SUPP);
472 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
476 lpfc_vport_set_state(vport, FC_VPORT_FAILED);
481 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
483 lpfc_host_attrib_init(lpfc_shost_from_vport(vport));
491 struct lpfc_vport *vport = *(struct lpfc_vport **)fc_vport->dd_data;
492 struct lpfc_hba *phba = vport->phba;
495 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
497 ndlp = lpfc_findnode_did(vport, Fabric_DID);
500 vport->unreg_vpi_cmpl = VPORT_INVAL;
502 if (!lpfc_issue_els_npiv_logo(vport, ndlp))
503 while (vport->unreg_vpi_cmpl == VPORT_INVAL && timeout)
507 lpfc_sli_host_down(vport);
510 * calling lpfc_cleanup_rpis(vport, 1)
512 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) {
517 lpfc_disc_state_machine(vport, ndlp, NULL,
520 lpfc_cleanup_rpis(vport, 1);
522 lpfc_stop_vport_timers(vport);
523 lpfc_unreg_all_rpis(vport);
524 lpfc_unreg_default_rpis(vport);
527 * scsi_host_put() to release the vport.
529 lpfc_mbx_unreg_vpi(vport);
532 vport->fc_flag |= FC_VPORT_NEEDS_INIT_VPI;
536 lpfc_vport_set_state(vport, FC_VPORT_DISABLED);
537 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
545 struct lpfc_vport *vport = *(struct lpfc_vport **)fc_vport->dd_data;
546 struct lpfc_hba *phba = vport->phba;
548 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
552 lpfc_vport_set_state(vport, FC_VPORT_LINKDOWN);
557 vport->load_flag |= FC_LOADING;
558 if (vport->fc_flag & FC_VPORT_NEEDS_INIT_VPI) {
560 lpfc_issue_init_vpi(vport);
564 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI;
574 lpfc_set_disctmo(vport);
575 lpfc_initial_fdisc(vport);
577 lpfc_vport_set_state(vport, FC_VPORT_NO_FABRIC_SUPP);
578 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
582 lpfc_vport_set_state(vport, FC_VPORT_FAILED);
586 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
605 struct lpfc_vport *vport = *(struct lpfc_vport **)fc_vport->dd_data;
606 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
607 struct lpfc_hba *phba = vport->phba;
611 if (vport->port_type == LPFC_PHYSICAL_PORT) {
612 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
618 /* If the vport is a static vport fail the deletion. */
619 if ((vport->vport_flag & STATIC_VPORT) &&
621 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
623 "static vport.\n");
627 vport->load_flag |= FC_UNLOADING;
631 * from happening until after this vport's discovery is finished.
636 vport->port_state > LPFC_VPORT_FAILED &&
637 vport->port_state < LPFC_VPORT_READY) {
641 if (vport->port_state > LPFC_VPORT_FAILED &&
642 vport->port_state < LPFC_VPORT_READY)
655 lpfc_free_sysfs_attr(vport);
657 lpfc_debugfs_terminate(vport);
665 ndlp = lpfc_findnode_did(vport, NameServer_DID);
671 /* Remove FC host and then SCSI host with the vport */
686 ndlp = lpfc_findnode_did(vport, Fabric_DID);
690 ndlp = lpfc_enable_node(vport, ndlp,
695 /* Remove ndlp from vport npld list */
696 lpfc_dequeue_node(vport, ndlp);
713 if (vport->cfg_enable_da_id) {
715 if (!lpfc_ns_cmd(vport, SLI_CTNS_DA_ID, 0, 0))
716 while (vport->ct_flags && timeout)
719 lpfc_printf_log(vport->phba, KERN_WARNING,
725 ndlp = lpfc_findnode_did(vport, Fabric_DID);
728 ndlp = lpfc_nlp_init(vport, Fabric_DID);
735 ndlp = lpfc_enable_node(vport, ndlp,
741 /* Remove ndlp from vport list */
742 lpfc_dequeue_node(vport, ndlp);
760 if (!(vport->vpi_state & LPFC_VPI_REGISTERED)) {
765 vport->unreg_vpi_cmpl = VPORT_INVAL;
767 if (!lpfc_issue_els_npiv_logo(vport, ndlp))
768 while (vport->unreg_vpi_cmpl == VPORT_INVAL && timeout)
773 lpfc_discovery_wait(vport);
782 ndlp = lpfc_findnode_did(vport, NameServer_DID);
786 lpfc_cleanup(vport);
787 lpfc_sli_host_down(vport);
789 lpfc_stop_vport_timers(vport);
792 lpfc_unreg_all_rpis(vport);
793 lpfc_unreg_default_rpis(vport);
796 * does the scsi_host_put() to release the vport.
798 if (!(vport->vpi_state & LPFC_VPI_REGISTERED) ||
799 lpfc_mbx_unreg_vpi(vport))
805 lpfc_free_vpi(phba, vport->vpi);
806 vport->work_port_events = 0;
808 list_del_init(&vport->listentry);
810 lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
833 "1801 Create vport work array FAILED: "
856 * lpfc_vport_reset_stat_data - Reset the statistical data for the vport
857 * @vport: Pointer to vport object.
859 * This function resets the statistical data for the vport. This function
863 lpfc_vport_reset_stat_data(struct lpfc_vport *vport)
867 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) {
879 * @vport: Pointer to vport object.
882 * nodes of the vport to collect statistical data.
885 lpfc_alloc_bucket(struct lpfc_vport *vport)
889 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) {
902 lpfc_printf_vlog(vport, KERN_ERR,
913 * @vport: Pointer to vport object.
916 * nodes of the vport.
919 lpfc_free_bucket(struct lpfc_vport *vport)
923 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) {