scsi: lpfc: fcoe: Fix link down issue after 1000+ link bounces
On FCoE adapters, when running link bounce test in a loop, initiator failed to login with switch switch and required driver reload to recover. Switch reached a point where all subsequent FLOGIs would be LS_RJT'd. Further testing showed the condition to be related to not performing FCF discovery between FLOGI's. Fix by monitoring FLOGI failures and once a repeated error is seen repeat FCF discovery. Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <jsmart2021@gmail.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:

committed by
Martin K. Petersen

parent
191e2f7493
commit
036cad1f1a
@@ -1992,6 +1992,26 @@ int lpfc_sli4_fcf_rr_next_proc(struct lpfc_vport *vport, uint16_t fcf_index)
|
||||
"failover and change port state:x%x/x%x\n",
|
||||
phba->pport->port_state, LPFC_VPORT_UNKNOWN);
|
||||
phba->pport->port_state = LPFC_VPORT_UNKNOWN;
|
||||
|
||||
if (!phba->fcf.fcf_redisc_attempted) {
|
||||
lpfc_unregister_fcf(phba);
|
||||
|
||||
rc = lpfc_sli4_redisc_fcf_table(phba);
|
||||
if (!rc) {
|
||||
lpfc_printf_log(phba, KERN_INFO, LOG_FIP,
|
||||
"3195 Rediscover FCF table\n");
|
||||
phba->fcf.fcf_redisc_attempted = 1;
|
||||
lpfc_sli4_clear_fcf_rr_bmask(phba);
|
||||
} else {
|
||||
lpfc_printf_log(phba, KERN_WARNING, LOG_FIP,
|
||||
"3196 Rediscover FCF table "
|
||||
"failed. Status:x%x\n", rc);
|
||||
}
|
||||
} else {
|
||||
lpfc_printf_log(phba, KERN_WARNING, LOG_FIP,
|
||||
"3197 Already rediscover FCF table "
|
||||
"attempted. No more retry\n");
|
||||
}
|
||||
goto stop_flogi_current_fcf;
|
||||
} else {
|
||||
lpfc_printf_log(phba, KERN_INFO, LOG_FIP | LOG_ELS,
|
||||
|
Reference in New Issue
Block a user