diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_els.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index 8db2fb3b45ec..3407b39e0a3f 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************* | 1 | /******************************************************************* |
2 | * This file is part of the Emulex Linux Device Driver for * | 2 | * This file is part of the Emulex Linux Device Driver for * |
3 | * Fibre Channel Host Bus Adapters. * | 3 | * Fibre Channel Host Bus Adapters. * |
4 | * Copyright (C) 2004-2011 Emulex. All rights reserved. * | 4 | * Copyright (C) 2004-2012 Emulex. All rights reserved. * |
5 | * EMULEX and SLI are trademarks of Emulex. * | 5 | * EMULEX and SLI are trademarks of Emulex. * |
6 | * www.emulex.com * | 6 | * www.emulex.com * |
7 | * Portions Copyright (C) 2004-2005 Christoph Hellwig * | 7 | * Portions Copyright (C) 2004-2005 Christoph Hellwig * |
@@ -925,9 +925,17 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
925 | * due to new FCF discovery | 925 | * due to new FCF discovery |
926 | */ | 926 | */ |
927 | if ((phba->hba_flag & HBA_FIP_SUPPORT) && | 927 | if ((phba->hba_flag & HBA_FIP_SUPPORT) && |
928 | (phba->fcf.fcf_flag & FCF_DISCOVERY) && | 928 | (phba->fcf.fcf_flag & FCF_DISCOVERY)) { |
929 | !((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && | 929 | if (phba->link_state < LPFC_LINK_UP) |
930 | (irsp->un.ulpWord[4] == IOERR_SLI_ABORTED))) { | 930 | goto stop_rr_fcf_flogi; |
931 | if ((phba->fcoe_cvl_eventtag_attn == | ||
932 | phba->fcoe_cvl_eventtag) && | ||
933 | (irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && | ||
934 | (irsp->un.ulpWord[4] == IOERR_SLI_ABORTED)) | ||
935 | goto stop_rr_fcf_flogi; | ||
936 | else | ||
937 | phba->fcoe_cvl_eventtag_attn = | ||
938 | phba->fcoe_cvl_eventtag; | ||
931 | lpfc_printf_log(phba, KERN_WARNING, LOG_FIP | LOG_ELS, | 939 | lpfc_printf_log(phba, KERN_WARNING, LOG_FIP | LOG_ELS, |
932 | "2611 FLOGI failed on FCF (x%x), " | 940 | "2611 FLOGI failed on FCF (x%x), " |
933 | "status:x%x/x%x, tmo:x%x, perform " | 941 | "status:x%x/x%x, tmo:x%x, perform " |
@@ -943,6 +951,7 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
943 | goto out; | 951 | goto out; |
944 | } | 952 | } |
945 | 953 | ||
954 | stop_rr_fcf_flogi: | ||
946 | /* FLOGI failure */ | 955 | /* FLOGI failure */ |
947 | lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, | 956 | lpfc_printf_vlog(vport, KERN_ERR, LOG_ELS, |
948 | "2858 FLOGI failure Status:x%x/x%x TMO:x%x\n", | 957 | "2858 FLOGI failure Status:x%x/x%x TMO:x%x\n", |