diff options
author | James Smart <james.smart@emulex.com> | 2013-03-01 16:35:38 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-04-09 15:07:39 -0700 |
commit | ae05ebe3bec9b2cecb1c09461ba2fd0dbfa81abb (patch) | |
tree | a7ba32da1d9388df31485a1562f6b3057d614bfc /drivers/scsi/lpfc/lpfc_els.c | |
parent | 0e9bb8d79c52ca115f3fc4a692ca0dd6931e2eeb (diff) | |
download | linux-ae05ebe3bec9b2cecb1c09461ba2fd0dbfa81abb.tar.gz linux-ae05ebe3bec9b2cecb1c09461ba2fd0dbfa81abb.tar.bz2 linux-ae05ebe3bec9b2cecb1c09461ba2fd0dbfa81abb.zip |
[SCSI] lpfc 8.3.38: Fixed degraded performance after cable pulls
The service parameters for the VPI/RPIs were incorrect, resulting in
lower utilization
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_els.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index b7a61ff43ca8..bbed8471bf0b 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c @@ -484,6 +484,7 @@ lpfc_issue_reg_vfi(struct lpfc_vport *vport) vport->port_state = LPFC_FABRIC_CFG_LINK; memcpy(dmabuf->virt, &phba->fc_fabparam, sizeof(vport->fc_sparam)); lpfc_reg_vfi(mboxq, vport, dmabuf->phys); + mboxq->mbox_cmpl = lpfc_mbx_cmpl_reg_vfi; mboxq->vport = vport; mboxq->context1 = dmabuf; @@ -700,6 +701,20 @@ lpfc_cmpl_els_flogi_fabric(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, } } + /* + * For FC we need to do some special processing because of the SLI + * Port's default settings of the Common Service Parameters. + */ + if (phba->sli4_hba.lnk_info.lnk_tp == LPFC_LNK_TYPE_FC) { + /* If physical FC port changed, unreg VFI and ALL VPIs / RPIs */ + if ((phba->sli_rev == LPFC_SLI_REV4) && fabric_param_changed) + lpfc_unregister_fcf_prep(phba); + + /* This should just update the VFI CSPs*/ + if (vport->fc_flag & FC_VFI_REGISTERED) + lpfc_issue_reg_vfi(vport); + } + if (fabric_param_changed && !(vport->fc_flag & FC_VPORT_NEEDS_REG_VPI)) { |