OSDN Git Service

[SCSI] lpfc 8.3.44: Fixed stopped FCF discovery on failed FCF record read
authorJames Smart <james.smart@emulex.com>
Wed, 18 Dec 2013 01:29:22 +0000 (20:29 -0500)
committerJames Bottomley <JBottomley@Parallels.com>
Sat, 15 Mar 2014 17:18:54 +0000 (10:18 -0700)
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/lpfc/lpfc_hbadisc.c

index 883ea2d..d6cc131 100644 (file)
@@ -2545,8 +2545,11 @@ lpfc_mbx_cmpl_fcf_rr_read_fcf_rec(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
        if (!new_fcf_record) {
                lpfc_printf_log(phba, KERN_WARNING, LOG_FIP,
                                "2766 Mailbox command READ_FCF_RECORD "
-                               "failed to retrieve a FCF record.\n");
-               goto error_out;
+                               "failed to retrieve a FCF record. "
+                               "hba_flg x%x fcf_flg x%x\n", phba->hba_flag,
+                               phba->fcf.fcf_flag);
+               lpfc_unregister_fcf_rescan(phba);
+               goto out;
        }
 
        /* Get the needed parameters from FCF record */
@@ -3973,7 +3976,10 @@ lpfc_nlp_counters(struct lpfc_vport *vport, int state, int count)
                vport->fc_map_cnt += count;
                break;
        case NLP_STE_NPR_NODE:
-               vport->fc_npr_cnt += count;
+               if (vport->fc_npr_cnt == 0 && count == -1)
+                       vport->fc_npr_cnt = 0;
+               else
+                       vport->fc_npr_cnt += count;
                break;
        }
        spin_unlock_irq(shost->host_lock);