| From foo@baz Thu Dec 14 21:30:47 CET 2017 |
| From: James Smart <jsmart2021@gmail.com> |
| Date: Sat, 4 Mar 2017 09:30:25 -0800 |
| Subject: scsi: lpfc: Fix crash during Hardware error recovery on SLI3 adapters |
| |
| From: James Smart <jsmart2021@gmail.com> |
| |
| |
| [ Upstream commit 5d181531bc6169e19a02a27d202cf0e982db9d0e ] |
| |
| if REG_VPI fails, the driver was incorrectly issuing INIT_VFI |
| (a SLI4 command) on a SLI3 adapter. |
| |
| Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> |
| Signed-off-by: James Smart <james.smart@broadcom.com> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Sasha Levin <alexander.levin@verizon.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/scsi/lpfc/lpfc_els.c | 14 ++++++++++---- |
| 1 file changed, 10 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/scsi/lpfc/lpfc_els.c |
| +++ b/drivers/scsi/lpfc/lpfc_els.c |
| @@ -7265,11 +7265,17 @@ lpfc_cmpl_reg_new_vport(struct lpfc_hba |
| spin_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 |
| - && !(vport->fc_flag & FC_LOGO_RCVD_DID_CHNG)) |
| - lpfc_issue_init_vfi(vport); |
| - else |
| + if (mb->mbxStatus == MBX_NOT_FINISHED) |
| + break; |
| + if ((vport->port_type == LPFC_PHYSICAL_PORT) && |
| + !(vport->fc_flag & FC_LOGO_RCVD_DID_CHNG)) { |
| + if (phba->sli_rev == LPFC_SLI_REV4) |
| + lpfc_issue_init_vfi(vport); |
| + else |
| + lpfc_initial_flogi(vport); |
| + } else { |
| lpfc_initial_fdisc(vport); |
| + } |
| break; |
| } |
| } else { |