Commit edaa5c74 authored by Saurav Kashyap's avatar Saurav Kashyap Committed by Christoph Hellwig

qla2xxx: Allow the next firmware dump if the previous dump capture fails for ISP8044.

Signed-off-by: default avatarGiridhar Malavali <giridhar.malvali@qlogic.com>
Signed-off-by: default avatarSaurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent 2c5bbbb2
...@@ -3141,6 +3141,7 @@ struct qla_hw_data { ...@@ -3141,6 +3141,7 @@ struct qla_hw_data {
uint32_t fw_dump_len; uint32_t fw_dump_len;
int fw_dumped; int fw_dumped;
int fw_dump_reading; int fw_dump_reading;
int prev_minidump_failed;
dma_addr_t eft_dma; dma_addr_t eft_dma;
void *eft; void *eft;
/* Current size of mctp dump is 0x086064 bytes */ /* Current size of mctp dump is 0x086064 bytes */
......
...@@ -3142,18 +3142,18 @@ qla82xx_check_md_needed(scsi_qla_host_t *vha) ...@@ -3142,18 +3142,18 @@ qla82xx_check_md_needed(scsi_qla_host_t *vha)
if (ql2xmdenable) { if (ql2xmdenable) {
if (!ha->fw_dumped) { if (!ha->fw_dumped) {
if (fw_major_version != ha->fw_major_version || if ((fw_major_version != ha->fw_major_version ||
fw_minor_version != ha->fw_minor_version || fw_minor_version != ha->fw_minor_version ||
fw_subminor_version != ha->fw_subminor_version) { fw_subminor_version != ha->fw_subminor_version) ||
(ha->prev_minidump_failed)) {
ql_dbg(ql_dbg_p3p, vha, 0xb02d, ql_dbg(ql_dbg_p3p, vha, 0xb02d,
"Firmware version differs " "Firmware version differs Previous version: %d:%d:%d - New version: %d:%d:%d, prev_minidump_failed: %d.\n",
"Previous version: %d:%d:%d - "
"New version: %d:%d:%d\n",
fw_major_version, fw_minor_version, fw_major_version, fw_minor_version,
fw_subminor_version, fw_subminor_version,
ha->fw_major_version, ha->fw_major_version,
ha->fw_minor_version, ha->fw_minor_version,
ha->fw_subminor_version); ha->fw_subminor_version,
ha->prev_minidump_failed);
/* Release MiniDump resources */ /* Release MiniDump resources */
qla82xx_md_free(vha); qla82xx_md_free(vha);
/* ALlocate MiniDump resources */ /* ALlocate MiniDump resources */
......
...@@ -3125,6 +3125,7 @@ qla8044_collect_md_data(struct scsi_qla_host *vha) ...@@ -3125,6 +3125,7 @@ qla8044_collect_md_data(struct scsi_qla_host *vha)
"Dump data mismatch: Data collected: " "Dump data mismatch: Data collected: "
"[0x%x], total_data_size:[0x%x]\n", "[0x%x], total_data_size:[0x%x]\n",
data_collected, ha->md_dump_size); data_collected, ha->md_dump_size);
rval = QLA_FUNCTION_FAILED;
goto md_failed; goto md_failed;
} }
...@@ -3149,10 +3150,12 @@ qla8044_get_minidump(struct scsi_qla_host *vha) ...@@ -3149,10 +3150,12 @@ qla8044_get_minidump(struct scsi_qla_host *vha)
if (!qla8044_collect_md_data(vha)) { if (!qla8044_collect_md_data(vha)) {
ha->fw_dumped = 1; ha->fw_dumped = 1;
ha->prev_minidump_failed = 0;
} else { } else {
ql_log(ql_log_fatal, vha, 0xb0db, ql_log(ql_log_fatal, vha, 0xb0db,
"%s: Unable to collect minidump\n", "%s: Unable to collect minidump\n",
__func__); __func__);
ha->prev_minidump_failed = 1;
} }
} }
......
...@@ -2885,6 +2885,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -2885,6 +2885,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
base_vha->flags.init_done = 1; base_vha->flags.init_done = 1;
base_vha->flags.online = 1; base_vha->flags.online = 1;
ha->prev_minidump_failed = 0;
ql_dbg(ql_dbg_init, base_vha, 0x00f2, ql_dbg(ql_dbg_init, base_vha, 0x00f2,
"Init done and hba is online.\n"); "Init done and hba is online.\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment