diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_els.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index f936f8c7efe1..017c933d60ab 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -796,7 +796,9 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
796 | * due to new FCF discovery | 796 | * due to new FCF discovery |
797 | */ | 797 | */ |
798 | if ((phba->hba_flag & HBA_FIP_SUPPORT) && | 798 | if ((phba->hba_flag & HBA_FIP_SUPPORT) && |
799 | (phba->fcf.fcf_flag & FCF_DISCOVERY)) { | 799 | (phba->fcf.fcf_flag & FCF_DISCOVERY) && |
800 | (irsp->ulpStatus != IOSTAT_LOCAL_REJECT) && | ||
801 | (irsp->un.ulpWord[4] != IOERR_SLI_ABORTED)) { | ||
800 | lpfc_printf_log(phba, KERN_WARNING, LOG_FIP | LOG_ELS, | 802 | lpfc_printf_log(phba, KERN_WARNING, LOG_FIP | LOG_ELS, |
801 | "2611 FLOGI failed on registered " | 803 | "2611 FLOGI failed on registered " |
802 | "FCF record fcf_index:%d, trying " | 804 | "FCF record fcf_index:%d, trying " |
@@ -890,9 +892,39 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
890 | */ | 892 | */ |
891 | if (sp->cmn.fPort) | 893 | if (sp->cmn.fPort) |
892 | rc = lpfc_cmpl_els_flogi_fabric(vport, ndlp, sp, irsp); | 894 | rc = lpfc_cmpl_els_flogi_fabric(vport, ndlp, sp, irsp); |
893 | else | 895 | else if (!(phba->hba_flag & HBA_FCOE_SUPPORT)) |
894 | rc = lpfc_cmpl_els_flogi_nport(vport, ndlp, sp); | 896 | rc = lpfc_cmpl_els_flogi_nport(vport, ndlp, sp); |
895 | 897 | else { | |
898 | lpfc_printf_vlog(vport, KERN_ERR, | ||
899 | LOG_FIP | LOG_ELS, | ||
900 | "2831 FLOGI response with cleared Fabric " | ||
901 | "bit fcf_index 0x%x " | ||
902 | "Switch Name %02x%02x%02x%02x%02x%02x%02x%02x " | ||
903 | "Fabric Name " | ||
904 | "%02x%02x%02x%02x%02x%02x%02x%02x\n", | ||
905 | phba->fcf.current_rec.fcf_indx, | ||
906 | phba->fcf.current_rec.switch_name[0], | ||
907 | phba->fcf.current_rec.switch_name[1], | ||
908 | phba->fcf.current_rec.switch_name[2], | ||
909 | phba->fcf.current_rec.switch_name[3], | ||
910 | phba->fcf.current_rec.switch_name[4], | ||
911 | phba->fcf.current_rec.switch_name[5], | ||
912 | phba->fcf.current_rec.switch_name[6], | ||
913 | phba->fcf.current_rec.switch_name[7], | ||
914 | phba->fcf.current_rec.fabric_name[0], | ||
915 | phba->fcf.current_rec.fabric_name[1], | ||
916 | phba->fcf.current_rec.fabric_name[2], | ||
917 | phba->fcf.current_rec.fabric_name[3], | ||
918 | phba->fcf.current_rec.fabric_name[4], | ||
919 | phba->fcf.current_rec.fabric_name[5], | ||
920 | phba->fcf.current_rec.fabric_name[6], | ||
921 | phba->fcf.current_rec.fabric_name[7]); | ||
922 | lpfc_nlp_put(ndlp); | ||
923 | spin_lock_irq(&phba->hbalock); | ||
924 | phba->fcf.fcf_flag &= ~FCF_DISCOVERY; | ||
925 | spin_unlock_irq(&phba->hbalock); | ||
926 | goto out; | ||
927 | } | ||
896 | if (!rc) { | 928 | if (!rc) { |
897 | /* Mark the FCF discovery process done */ | 929 | /* Mark the FCF discovery process done */ |
898 | if (phba->hba_flag & HBA_FIP_SUPPORT) | 930 | if (phba->hba_flag & HBA_FIP_SUPPORT) |