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

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

parent 2c5bbbb2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3141,6 +3141,7 @@ struct qla_hw_data {
	uint32_t	fw_dump_len;
	int		fw_dumped;
	int		fw_dump_reading;
	int		prev_minidump_failed;
	dma_addr_t	eft_dma;
	void		*eft;
/* Current size of mctp dump is 0x086064 bytes */
+6 −6
Original line number Diff line number Diff line
@@ -3142,18 +3142,18 @@ qla82xx_check_md_needed(scsi_qla_host_t *vha)

	if (ql2xmdenable) {
		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_subminor_version != ha->fw_subminor_version) {
			    fw_subminor_version != ha->fw_subminor_version) ||
			    (ha->prev_minidump_failed)) {
				ql_dbg(ql_dbg_p3p, vha, 0xb02d,
				    "Firmware version differs "
				    "Previous version: %d:%d:%d - "
				    "New version: %d:%d:%d\n",
				    "Firmware version differs Previous version: %d:%d:%d - New version: %d:%d:%d, prev_minidump_failed: %d.\n",
				    fw_major_version, fw_minor_version,
				    fw_subminor_version,
				    ha->fw_major_version,
				    ha->fw_minor_version,
				    ha->fw_subminor_version);
				    ha->fw_subminor_version,
				    ha->prev_minidump_failed);
				/* Release MiniDump resources */
				qla82xx_md_free(vha);
				/* ALlocate MiniDump resources */
+3 −0
Original line number Diff line number Diff line
@@ -3125,6 +3125,7 @@ qla8044_collect_md_data(struct scsi_qla_host *vha)
		    "Dump data mismatch: Data collected: "
		    "[0x%x], total_data_size:[0x%x]\n",
		    data_collected, ha->md_dump_size);
		rval = QLA_FUNCTION_FAILED;
		goto md_failed;
	}

@@ -3149,10 +3150,12 @@ qla8044_get_minidump(struct scsi_qla_host *vha)

	if (!qla8044_collect_md_data(vha)) {
		ha->fw_dumped = 1;
		ha->prev_minidump_failed = 0;
	} else {
		ql_log(ql_log_fatal, vha, 0xb0db,
		    "%s: Unable to collect minidump\n",
		    __func__);
		ha->prev_minidump_failed = 1;
	}
}

+1 −0
Original line number Diff line number Diff line
@@ -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.online = 1;
	ha->prev_minidump_failed = 0;

	ql_dbg(ql_dbg_init, base_vha, 0x00f2,
	    "Init done and hba is online.\n");