lpfc 8.3.39: Fixed pt2pt and loop discovery problems on topology changes.
Subsystems (2)
PATCH 4/22 lpfc 8.3.39: Fixed pt2pt and loop discovery problems on topology changes.
Fixed pt2pt and loop discovery problems on topology changes.
Signed-off-by James Smart <[email protected]>
---
lpfc.h | 1 lpfc_attr.c | 2 + lpfc_els.c | 93 +++++++++++++++++++++++++++++++++++++++++++++++-------- lpfc_hbadisc.c | 55 ++++++++++++++++++++++++++++---- lpfc_mbox.c | 9 +++-- lpfc_nportdisc.c | 6 ++- lpfc_sli.c | 8 +++- 7 files changed, 149 insertions(+), 25 deletions(-)
drivers/scsi/lpfc/lpfc_attr.c +2 -0
@@ -2801,6 +2801,8 @@ lpfc_topology_store(struct device *dev,lpfc_printf_vlog (vport,KERN_ERR ,LOG_INIT ,"3054 lpfc_topology changed from %d to %d\n" , prev_val, val); +if (prev_val != val && phba->sli_rev ==LPFC_SLI_REV4 ) + phba->fc_topology_changed =1 ; err =lpfc_issue_lip (lpfc_shost_from_vport (phba->pport));if (err) { phba->cfg_topology = prev_val;
drivers/scsi/lpfc/lpfc_els.c +81 -12
177 lines not on this page · raw message
drivers/scsi/lpfc/lpfc.h +1 -0
@@ -673,6 +673,7 @@ struct lpfc_hba {uint32_t lmt;uint32_t fc_topology;/* link topology, from LINK INIT */ +uint32_t fc_topology_changed;/* link topology, from LINK INIT */ struct lpfc_stats fc_stat;
drivers/scsi/lpfc/lpfc_hbadisc.c +49 -6
105 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_mbox.c +6 -3
@@ -2149,18 +2149,21 @@ lpfc_reg_vfi(struct lpfcMboxq *mbox, str/* Only FC supports upd bit */ if ((phba->sli4_hba.lnk_info.lnk_tp ==LPFC_LNK_TYPE_FC ) && - (vport->fc_flag &FC_VFI_REGISTERED )) { + (vport->fc_flag &FC_VFI_REGISTERED ) && + (!phba->fc_topology_changed)) {bf_set (lpfc_reg_vfi_vp, reg_vfi,0 );bf_set (lpfc_reg_vfi_upd, reg_vfi,1 ); }lpfc_printf_vlog (vport,KERN_INFO ,LOG_MBOX ,"3134 Register VFI, mydid:x%x, fcfi:%d, " -" vfi:%d, vpi:%d, fc_pname:%x%x\n" , +" vfi:%d, vpi:%d, fc_pname:%x%x fc_flag:x%x" +" port_state:x%x topology chg:%d\n" , vport->fc_myDID, phba->fcf.fcfi, phba->sli4_hba.vfi_ids[vport->vfi], phba->vpi_ids[vport->vpi], - reg_vfi->wwn[0 ], reg_vfi->wwn[1 ]); + reg_vfi->wwn[0 ], reg_vfi->wwn[1 ], vport->fc_flag, + vport->port_state, phba->fc_topology_changed); }/**
drivers/scsi/lpfc/lpfc_nportdisc.c +4 -2
@@ -332,9 +332,11 @@ lpfc_rcv_plogi(struct lpfc_vport *vport,/* PLOGI chkparm OK */ lpfc_printf_vlog (vport,KERN_INFO ,LOG_ELS , -"0114 PLOGI chkparm OK Data: x%x x%x x%x x%x\n" , +"0114 PLOGI chkparm OK Data: x%x x%x x%x " +"x%x x%x x%x\n" , ndlp->nlp_DID, ndlp->nlp_state, ndlp->nlp_flag, - ndlp->nlp_rpi); + ndlp->nlp_rpi, vport->port_state, + vport->fc_flag);if (vport->cfg_fcp_class ==2 && sp->cls2.classValid) ndlp->nlp_fcp_info |=CLASS2 ;
drivers/scsi/lpfc/lpfc_sli.c +6 -2
@@ -2341,7 +2341,8 @@ lpfc_sli_handle_mb_event(struct lpfc_hba/* Mailbox cmd <cmd> Cmpl <cmpl> */ lpfc_printf_log(phba, KERN_INFO, LOG_MBOX | LOG_SLI, "(%d):0307 Mailbox cmd x%x (x%x/x%x) Cmpl x%p " - "Data: x%x x%x x%x x%x x%x x%x x%x x%x x%x\n", + "Data: x%x x%x x%x x%x x%x x%x x%x x%x x%x " + "x%x x%x x%x\n", pmb->vport ? pmb->vport->vpi : 0, pmbox->mbxCommand, lpfc_sli_config_mbox_subsys_get(phba, pmb),
@@ -2355,7 +2356,10 @@ lpfc_sli_handle_mb_event(struct lpfc_hba pmbox->un.varWords[4 ], pmbox->un.varWords[5 ], pmbox->un.varWords[6 ], - pmbox->un.varWords[7]); + pmbox->un.varWords[7 ], + pmbox->un.varWords[8 ], + pmbox->un.varWords[9 ], + pmbox->un.varWords[10]);if (pmb->mbox_cmpl) pmb->mbox_cmpl (phba,pmb);