From: Santosh Vernekar Date: Mon, 2 Jul 2012 12:07:53 +0000 (-0700) Subject: qla2xxx: Perform ROM mbx cmd access only after ISP soft-reset during f/w recovery. X-Git-Tag: v2.6.39-400.9.0~444 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=808942fcbfd419f4aa674d199140d3c5f441447c;p=users%2Fjedix%2Flinux-maple.git qla2xxx: Perform ROM mbx cmd access only after ISP soft-reset during f/w recovery. Initial assumption by driver was that the ROM mbx cmds will be accessible even when FCoE operational f/w is in reset recovery. However it seems that in case of "ISP System error" (i.e. 0x8002) there is a period when the ISP ISP is not operational and firmware waits in tight loop for either the driver to take a dump or perform soft-reset. During this time none of the ROM mbx cmds will get serviced by f/w. Hence the patch makes sure driver sends mbx only after soft reset is complete. JIRA Key: V2632FC-227 --- diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 23314b7c8a7c..7d020d619e93 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -4257,17 +4257,17 @@ qla2x00_abort_isp(scsi_qla_host_t *vha) struct req_que *req = ha->req_q_map[0]; unsigned long flags; - if (IS_QLA8031(ha)) { - ql_dbg(ql_dbg_p3p, vha, 0xb05c, - "Clearing fcoe driver presence.\n"); - if (qla83xx_clear_drv_presence(vha) != QLA_SUCCESS) - ql_dbg(ql_dbg_p3p, vha, 0xb073, - "Erro while clearing DRV-Presence.\n"); - } - if (vha->flags.online) { qla2x00_abort_isp_cleanup(vha); + if (IS_QLA8031(ha)) { + ql_dbg(ql_dbg_p3p, vha, 0xb05c, + "Clearing fcoe driver presence.\n"); + if (qla83xx_clear_drv_presence(vha) != QLA_SUCCESS) + ql_dbg(ql_dbg_p3p, vha, 0xb073, + "Error while clearing DRV-Presence.\n"); + } + if (unlikely(pci_channel_offline(ha->pdev) && ha->flags.pci_channel_io_perm_failure)) { clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags);