lpfc 8.3.4: NPIV vport fixes
Subsystems (2)
PATCH 5/8 lpfc 8.3.4: NPIV vport fixes
NPIV vport fixes
- Fixed static vport creation on SLI4 HBAs
- Fixed vport create sending init_vpi before REG_VFI
- Fix unable to create vports on SLI4 HBA's Port2
Signed-off-by James Smart <[email protected]>
---
drivers/scsi/lpfc/lpfc.h | 1 drivers/scsi/lpfc/lpfc_crtn.h | 4 + drivers/scsi/lpfc/lpfc_hbadisc.c | 114 +++++++++++++++++++++++++++++++------- drivers/scsi/lpfc/lpfc_init.c | 5 ++ drivers/scsi/lpfc/lpfc_mbox.c | 47 ++++++++++++---- drivers/scsi/lpfc/lpfc_sli.c | 2 - drivers/scsi/lpfc/lpfc_vport.c | 51 ++++++++++------- 7 files changed, 168 insertions(+), 56 deletions(-)
drivers/scsi/lpfc/lpfc.h +1 -0
@@ -312,6 +312,7 @@ struct lpfc_vport {#define FC_BYPASSED_MODE 0x20000/* NPort is in bypassed mode */ #define FC_VPORT_NEEDS_REG_VPI 0x80000/* Needs to have its vpi registered */ #define FC_RSCN_DEFERRED 0x100000/* A deferred RSCN being processed */ +#define FC_VPORT_NEEDS_INIT_VPI 0x200000/* Need to INIT_VPI before FDISC */ uint32_t ct_flags;#define FC_CT_RFF_ID 0x1/* RFF_ID accepted by switch */
drivers/scsi/lpfc/lpfc_crtn.h +2 -2
@@ -25,7 +25,7 @@ void lpfc_down_link(struct lpfc_hba *, LPFC_MBOXQ_t *);void lpfc_sli_read_link_ste (struct lpfc_hba *);void lpfc_dump_mem (struct lpfc_hba *,LPFC_MBOXQ_t *,uint16_t ,uint16_t );void lpfc_dump_wakeup_param (struct lpfc_hba *,LPFC_MBOXQ_t *); -void lpfc_dump_static_vport (struct lpfc_hba *,LPFC_MBOXQ_t *,uint16_t ); +int lpfc_dump_static_vport (struct lpfc_hba *,LPFC_MBOXQ_t *,uint16_t );int lpfc_dump_fcoe_param (struct lpfc_hba *,struct lpfcMboxq *);void lpfc_read_nv (struct lpfc_hba *,LPFC_MBOXQ_t *);void lpfc_config_async (struct lpfc_hba *,LPFC_MBOXQ_t *,uint32_t );
@@ -184,7 +184,7 @@ int lpfc_mbox_dev_check(struct lpfc_hba *);int lpfc_mbox_tmo_val (struct lpfc_hba *,int );void lpfc_init_vfi (struct lpfcMboxq *,struct lpfc_vport *);void lpfc_reg_vfi (struct lpfcMboxq *,struct lpfc_vport *,dma_addr_t ); -void lpfc_init_vpi (struct lpfcMboxq *,uint16_t ); +void lpfc_init_vpi (struct lpfc_hba *,struct lpfcMboxq *,uint16_t );void lpfc_unreg_vfi (struct lpfcMboxq *,uint16_t );void lpfc_reg_fcfi (struct lpfc_hba *,struct lpfcMboxq *);void lpfc_unreg_fcfi (struct lpfcMboxq *,uint16_t );
drivers/scsi/lpfc/lpfc_hbadisc.c +94 -20
165 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_init.c +5 -0
@@ -2155,6 +2155,8 @@ lpfc_online(struct lpfc_hba *phba) vports[i]->fc_flag &= ~FC_OFFLINE_MODE ;if (phba->sli3_options &LPFC_SLI3_NPIV_ENABLED ) vports[i]->fc_flag |=FC_VPORT_NEEDS_REG_VPI ; +if (phba->sli_rev ==LPFC_SLI_REV4 ) + vports[i]->fc_flag |=FC_VPORT_NEEDS_INIT_VPI ;spin_unlock_irq (shost->host_lock); }lpfc_destroy_vport_work_array (phba, vports);
@@ -7372,6 +7374,9 @@ lpfc_pci_probe_one_s4(struct pci_dev *pdev, const struct pci_device_id *pid)/* Perform post initialization setup */ lpfc_post_init_setup (phba); +/* Check if there are static vports to be created. */ +lpfc_create_static_vport (phba); +return 0 ; out_disable_intr:
drivers/scsi/lpfc/lpfc_mbox.c +36 -11
83 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_sli.c +1 -1
@@ -11341,7 +11341,7 @@ lpfc_sli4_init_vpi(struct lpfc_hba *phba, uint16_t vpi) mboxq =mempool_alloc (phba->mbox_mem_pool,GFP_KERNEL );if (!mboxq)return -ENOMEM ; -lpfc_init_vpi (mboxq, vpi); +lpfc_init_vpi (phba, mboxq, vpi); mbox_tmo =lpfc_mbox_tmo_val (phba,MBX_INIT_VPI ); rc =lpfc_sli_issue_mbox_wait (phba, mboxq, mbox_tmo);if (rc !=MBX_TIMEOUT )
drivers/scsi/lpfc/lpfc_vport.c +29 -22
70 lines not on this page · raw message