diff options
author | James Smart <james.smart@emulex.com> | 2010-07-14 15:31:37 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-07-28 10:05:41 -0400 |
commit | 3804dc84b8c11038ef75d97fd11e43658f623665 (patch) | |
tree | 03f6a03b3a489efb11ed40548a5b79b7da34034b /drivers/scsi/lpfc/lpfc_els.c | |
parent | 589a52d6a97e01c5ff6c244ee6c8ea57726c610f (diff) |
[SCSI] lpfc 8.3.15: FCoE Related Fixes
FCoE Related Fixes
- Correct find-next-FCF routine so that it searches at next FCF rather
than current one.
- Enhanced round-robin FCF failover algorithm to re-start on "New FCF"
async event
- Update the manner in which we look at FCFs while they may be in
their discovery state.
- Use LPFC_FCOE_NULL_VID macro when checkinf for valid vlan_id for FCF
Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_els.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index f80156246e51..afbed6bc31f0 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -813,18 +813,21 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
813 | */ | 813 | */ |
814 | lpfc_printf_log(phba, KERN_WARNING, | 814 | lpfc_printf_log(phba, KERN_WARNING, |
815 | LOG_FIP | LOG_ELS, | 815 | LOG_FIP | LOG_ELS, |
816 | "2760 FLOGI exhausted FCF " | 816 | "2760 Completed one round " |
817 | "round robin failover list, " | 817 | "of FLOGI FCF round robin " |
818 | "retry FLOGI on the current " | 818 | "failover list, retry FLOGI " |
819 | "registered FCF index:%d\n", | 819 | "on currently registered " |
820 | "FCF index:%d\n", | ||
820 | phba->fcf.current_rec.fcf_indx); | 821 | phba->fcf.current_rec.fcf_indx); |
821 | spin_lock_irq(&phba->hbalock); | ||
822 | phba->fcf.fcf_flag &= ~FCF_DISCOVERY; | ||
823 | spin_unlock_irq(&phba->hbalock); | ||
824 | } else { | 822 | } else { |
823 | lpfc_printf_log(phba, KERN_INFO, | ||
824 | LOG_FIP | LOG_ELS, | ||
825 | "2794 FLOGI FCF round robin " | ||
826 | "failover to FCF index x%x\n", | ||
827 | fcf_index); | ||
825 | rc = lpfc_sli4_fcf_rr_read_fcf_rec(phba, | 828 | rc = lpfc_sli4_fcf_rr_read_fcf_rec(phba, |
826 | fcf_index); | 829 | fcf_index); |
827 | if (rc) { | 830 | if (rc) |
828 | lpfc_printf_log(phba, KERN_WARNING, | 831 | lpfc_printf_log(phba, KERN_WARNING, |
829 | LOG_FIP | LOG_ELS, | 832 | LOG_FIP | LOG_ELS, |
830 | "2761 FLOGI round " | 833 | "2761 FLOGI round " |
@@ -833,10 +836,7 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
833 | "rc:x%x, fcf_index:" | 836 | "rc:x%x, fcf_index:" |
834 | "%d\n", rc, | 837 | "%d\n", rc, |
835 | phba->fcf.current_rec.fcf_indx); | 838 | phba->fcf.current_rec.fcf_indx); |
836 | spin_lock_irq(&phba->hbalock); | 839 | else |
837 | phba->fcf.fcf_flag &= ~FCF_DISCOVERY; | ||
838 | spin_unlock_irq(&phba->hbalock); | ||
839 | } else | ||
840 | goto out; | 840 | goto out; |
841 | } | 841 | } |
842 | } | 842 | } |