[SCSI] bnx2fc: Clear DESTROY_CMPL flag after firmware destroy
authorBhanu Prakash Gollapudi <bprakash@broadcom.com>
Fri, 5 Aug 2011 00:38:43 +0000 (17:38 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Sat, 27 Aug 2011 14:35:36 +0000 (08:35 -0600)
Since this flag was never cleared, the driver does not wait for firmware
destroy completions, causing missed KCQEs.

Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/bnx2fc/bnx2fc_fcoe.c

index dccabafc3bb567c0c5fd753257cdd0b41da964be..ca2e20690b93be513d62cc7a17952e6e62e68ade 100644 (file)
@@ -771,8 +771,8 @@ static void bnx2fc_destroy_timer(unsigned long data)
 {
        struct bnx2fc_hba *hba = (struct bnx2fc_hba *)data;
 
-       BNX2FC_MISC_DBG("ERROR:bnx2fc_destroy_timer - "
-                  "Destroy compl not received!!\n");
+       printk(KERN_ERR PFX "ERROR:bnx2fc_destroy_timer - "
+              "Destroy compl not received!!\n");
        set_bit(BNX2FC_FLAG_DESTROY_CMPL, &hba->flags);
        wake_up_interruptible(&hba->destroy_wait);
 }
@@ -1701,6 +1701,7 @@ static void bnx2fc_fw_destroy(struct bnx2fc_hba *hba)
                        wait_event_interruptible(hba->destroy_wait,
                                        test_bit(BNX2FC_FLAG_DESTROY_CMPL,
                                                 &hba->flags));
+                       clear_bit(BNX2FC_FLAG_DESTROY_CMPL, &hba->flags);
                        /* This should never happen */
                        if (signal_pending(current))
                                flush_signals(current);