lpfc 8.3.11: NPIV changes
Subsystems (2)
PATCH 5/6 lpfc 8.3.11: NPIV changes
NPIV changes
- Enable NPIV by default.
- Added code to handle unsolicited LOGO on physical port.
Signed-off-by Alex Iannicelli <[email protected]>
Signed-off-by James Smart <[email protected]>
---
lpfc.h | 2 ++ lpfc_attr.c | 2 +- lpfc_els.c | 7 ++++++- lpfc_hbadisc.c | 7 ++++++- lpfc_nportdisc.c | 43 ++++++++++++++++++++++++++++++++++++++----- 5 files changed, 53 insertions(+), 8 deletions(-)
drivers/scsi/lpfc/lpfc_attr.c +1 -1
@@ -1928,7 +1928,7 @@ int lpfc_enable_npiv = 0;module_param (lpfc_enable_npiv, int,0 );MODULE_PARM_DESC (lpfc_enable_npiv,"Enable NPIV functionality" );lpfc_param_show (enable_npiv); -lpfc_param_init (enable_npiv,0 ,0 ,1 ); +lpfc_param_init (enable_npiv,1 ,0 ,1 ); static DEVICE_ATTR(lpfc_enable_npiv, S_IRUGO, lpfc_enable_npiv_show, NULL);
drivers/scsi/lpfc/lpfc_els.c +6 -1
@@ -863,6 +863,7 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phb }spin_lock_irq (shost->host_lock); vport->fc_flag &= ~FC_VPORT_CVL_RCVD ; + vport->fc_flag &= ~FC_VPORT_LOGO_RCVD ;spin_unlock_irq (shost->host_lock);/*
@@ -6052,7 +6053,8 @@ lpfc_cmpl_reg_new_vport(struct lpfc_hbaspin_lock_irq (shost->host_lock); vport->fc_flag |=FC_VPORT_NEEDS_REG_VPI ;spin_unlock_irq (shost->host_lock); -if (vport->port_type ==LPFC_PHYSICAL_PORT ) +if (vport->port_type ==LPFC_PHYSICAL_PORT + && !(vport->fc_flag &FC_LOGO_RCVD_DID_CHNG ))lpfc_initial_flogi (vport);else lpfc_initial_fdisc (vport);
@@ -6288,6 +6290,7 @@ lpfc_cmpl_els_fdisc(struct lpfc_hba *phb }spin_lock_irq (shost->host_lock); vport->fc_flag &= ~FC_VPORT_CVL_RCVD ; + vport->fc_flag &= ~FC_VPORT_LOGO_RCVD ; vport->fc_flag |=FC_FABRIC ;if (vport->phba->fc_topology ==TOPOLOGY_LOOP ) vport->fc_flag |=FC_PUBLIC_LOOP ;
@@ -6317,6 +6320,8 @@ lpfc_cmpl_els_fdisc(struct lpfc_hba *phb vport->fc_flag |=FC_VPORT_NEEDS_REG_VPI ;if (phba->sli_rev ==LPFC_SLI_REV4 ) vport->fc_flag |=FC_VPORT_NEEDS_INIT_VPI ; +else + vport->fc_flag |=FC_LOGO_RCVD_DID_CHNG ;spin_unlock_irq (shost->host_lock); }
drivers/scsi/lpfc/lpfc.h +2 -0
@@ -310,7 +310,9 @@ struct lpfc_vport {#define FC_NLP_MORE 0x40/* More node to process in node tbl */ #define FC_OFFLINE_MODE 0x80/* Interface is offline for diag */ #define FC_FABRIC 0x100/* We are fabric attached */ +#define FC_VPORT_LOGO_RCVD 0x200/* LOGO received on vport */ #define FC_RSCN_DISCOVERY 0x400/* Auth all devices after RSCN */ +#define FC_LOGO_RCVD_DID_CHNG 0x800/* FDISC on phys port detect DID chng*/ #define FC_SCSI_SCAN_TMO 0x4000/* scsi scan timer running */ #define FC_ABORT_DISCOVERY 0x8000/* we want to abort discovery */ #define FC_NDISC_ACTIVE 0x10000/* NPort discovery active */
drivers/scsi/lpfc/lpfc_hbadisc.c +6 -1
@@ -3015,7 +3015,12 @@ lpfc_mbx_cmpl_fabric_reg_login(struct lplpfc_nlp_set_state (vport, ndlp,NLP_STE_UNMAPPED_NODE );if (vport->port_state ==LPFC_FABRIC_CFG_LINK ) { -lpfc_start_fdiscs (phba); +/* when physical port receive logo donot start +* vport discovery */ +if (!(vport->fc_flag &FC_LOGO_RCVD_DID_CHNG )) +lpfc_start_fdiscs (phba); +else + vport->fc_flag &= ~FC_LOGO_RCVD_DID_CHNG ;lpfc_do_scr_ns_plogi (phba, vport); }
drivers/scsi/lpfc/lpfc_nportdisc.c +38 -5
65 lines not on this page · raw message