diff options
author | Saurav Kashyap <saurav.kashyap@qlogic.com> | 2014-04-11 16:54:14 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-05-19 07:31:00 -0400 |
commit | edaa5c74177a6856f108b4909407985b6d3f951c (patch) | |
tree | 105c28106011192d784cc49ddb074367adb2cbca /drivers/scsi/qla2xxx | |
parent | 2c5bbbb25f0dd6b178f9b03c93c87b6d7727cdc4 (diff) |
qla2xxx: Allow the next firmware dump if the previous dump capture fails for ISP8044.
Signed-off-by: Giridhar Malavali <giridhar.malvali@qlogic.com>
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 1 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_nx.c | 12 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_nx2.c | 3 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 1 |
4 files changed, 11 insertions, 6 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 89bece72ef66..bab1cf12d1e9 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
@@ -3141,6 +3141,7 @@ struct qla_hw_data { | |||
3141 | uint32_t fw_dump_len; | 3141 | uint32_t fw_dump_len; |
3142 | int fw_dumped; | 3142 | int fw_dumped; |
3143 | int fw_dump_reading; | 3143 | int fw_dump_reading; |
3144 | int prev_minidump_failed; | ||
3144 | dma_addr_t eft_dma; | 3145 | dma_addr_t eft_dma; |
3145 | void *eft; | 3146 | void *eft; |
3146 | /* Current size of mctp dump is 0x086064 bytes */ | 3147 | /* Current size of mctp dump is 0x086064 bytes */ |
diff --git a/drivers/scsi/qla2xxx/qla_nx.c b/drivers/scsi/qla2xxx/qla_nx.c index 81388e957237..3c5819ae451b 100644 --- a/drivers/scsi/qla2xxx/qla_nx.c +++ b/drivers/scsi/qla2xxx/qla_nx.c | |||
@@ -3142,18 +3142,18 @@ qla82xx_check_md_needed(scsi_qla_host_t *vha) | |||
3142 | 3142 | ||
3143 | if (ql2xmdenable) { | 3143 | if (ql2xmdenable) { |
3144 | if (!ha->fw_dumped) { | 3144 | if (!ha->fw_dumped) { |
3145 | if (fw_major_version != ha->fw_major_version || | 3145 | if ((fw_major_version != ha->fw_major_version || |
3146 | fw_minor_version != ha->fw_minor_version || | 3146 | fw_minor_version != ha->fw_minor_version || |
3147 | fw_subminor_version != ha->fw_subminor_version) { | 3147 | fw_subminor_version != ha->fw_subminor_version) || |
3148 | (ha->prev_minidump_failed)) { | ||
3148 | ql_dbg(ql_dbg_p3p, vha, 0xb02d, | 3149 | ql_dbg(ql_dbg_p3p, vha, 0xb02d, |
3149 | "Firmware version differs " | 3150 | "Firmware version differs Previous version: %d:%d:%d - New version: %d:%d:%d, prev_minidump_failed: %d.\n", |
3150 | "Previous version: %d:%d:%d - " | ||
3151 | "New version: %d:%d:%d\n", | ||
3152 | fw_major_version, fw_minor_version, | 3151 | fw_major_version, fw_minor_version, |
3153 | fw_subminor_version, | 3152 | fw_subminor_version, |
3154 | ha->fw_major_version, | 3153 | ha->fw_major_version, |
3155 | ha->fw_minor_version, | 3154 | ha->fw_minor_version, |
3156 | ha->fw_subminor_version); | 3155 | ha->fw_subminor_version, |
3156 | ha->prev_minidump_failed); | ||
3157 | /* Release MiniDump resources */ | 3157 | /* Release MiniDump resources */ |
3158 | qla82xx_md_free(vha); | 3158 | qla82xx_md_free(vha); |
3159 | /* ALlocate MiniDump resources */ | 3159 | /* ALlocate MiniDump resources */ |
diff --git a/drivers/scsi/qla2xxx/qla_nx2.c b/drivers/scsi/qla2xxx/qla_nx2.c index e381835a10b4..d36a62377c09 100644 --- a/drivers/scsi/qla2xxx/qla_nx2.c +++ b/drivers/scsi/qla2xxx/qla_nx2.c | |||
@@ -3125,6 +3125,7 @@ skip_nxt_entry: | |||
3125 | "Dump data mismatch: Data collected: " | 3125 | "Dump data mismatch: Data collected: " |
3126 | "[0x%x], total_data_size:[0x%x]\n", | 3126 | "[0x%x], total_data_size:[0x%x]\n", |
3127 | data_collected, ha->md_dump_size); | 3127 | data_collected, ha->md_dump_size); |
3128 | rval = QLA_FUNCTION_FAILED; | ||
3128 | goto md_failed; | 3129 | goto md_failed; |
3129 | } | 3130 | } |
3130 | 3131 | ||
@@ -3149,10 +3150,12 @@ qla8044_get_minidump(struct scsi_qla_host *vha) | |||
3149 | 3150 | ||
3150 | if (!qla8044_collect_md_data(vha)) { | 3151 | if (!qla8044_collect_md_data(vha)) { |
3151 | ha->fw_dumped = 1; | 3152 | ha->fw_dumped = 1; |
3153 | ha->prev_minidump_failed = 0; | ||
3152 | } else { | 3154 | } else { |
3153 | ql_log(ql_log_fatal, vha, 0xb0db, | 3155 | ql_log(ql_log_fatal, vha, 0xb0db, |
3154 | "%s: Unable to collect minidump\n", | 3156 | "%s: Unable to collect minidump\n", |
3155 | __func__); | 3157 | __func__); |
3158 | ha->prev_minidump_failed = 1; | ||
3156 | } | 3159 | } |
3157 | } | 3160 | } |
3158 | 3161 | ||
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 1b1cd75a7aa0..0114ea4e87cd 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -2885,6 +2885,7 @@ skip_dpc: | |||
2885 | 2885 | ||
2886 | base_vha->flags.init_done = 1; | 2886 | base_vha->flags.init_done = 1; |
2887 | base_vha->flags.online = 1; | 2887 | base_vha->flags.online = 1; |
2888 | ha->prev_minidump_failed = 0; | ||
2888 | 2889 | ||
2889 | ql_dbg(ql_dbg_init, base_vha, 0x00f2, | 2890 | ql_dbg(ql_dbg_init, base_vha, 0x00f2, |
2890 | "Init done and hba is online.\n"); | 2891 | "Init done and hba is online.\n"); |