diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_mbx.c')
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_mbx.c | 37 | 
1 files changed, 24 insertions, 13 deletions
| diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index 2819ceb96041..67f64db390b0 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c @@ -10,7 +10,7 @@  #include <linux/delay.h>  #include <linux/gfp.h> -struct rom_cmd { +static struct rom_cmd {  	uint16_t cmd;  } rom_cmds[] = {  	{ MBC_LOAD_RAM }, @@ -101,12 +101,12 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)  		return QLA_FUNCTION_TIMEOUT;  	} -	 /* if PCI error, then avoid mbx processing.*/ -	 if (test_bit(PCI_ERR, &base_vha->dpc_flags)) { +	/* if PCI error, then avoid mbx processing.*/ +	if (test_bit(PCI_ERR, &base_vha->dpc_flags)) {  		ql_log(ql_log_warn, vha, 0x1191,  		    "PCI error, exiting.\n");  		return QLA_FUNCTION_TIMEOUT; -	 } +	}  	reg = ha->iobase;  	io_lock_on = base_vha->flags.init_done; @@ -323,20 +323,33 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)  		}  	} else { -		uint16_t mb0; -		uint32_t ictrl; +		uint16_t mb[8]; +		uint32_t ictrl, host_status, hccr;  		uint16_t        w;  		if (IS_FWI2_CAPABLE(ha)) { -			mb0 = RD_REG_WORD(®->isp24.mailbox0); +			mb[0] = RD_REG_WORD(®->isp24.mailbox0); +			mb[1] = RD_REG_WORD(®->isp24.mailbox1); +			mb[2] = RD_REG_WORD(®->isp24.mailbox2); +			mb[3] = RD_REG_WORD(®->isp24.mailbox3); +			mb[7] = RD_REG_WORD(®->isp24.mailbox7);  			ictrl = RD_REG_DWORD(®->isp24.ictrl); +			host_status = RD_REG_DWORD(®->isp24.host_status); +			hccr = RD_REG_DWORD(®->isp24.hccr); + +			ql_log(ql_log_warn, vha, 0x1119, +			    "MBX Command timeout for cmd %x, iocontrol=%x jiffies=%lx " +			    "mb[0-3]=[0x%x 0x%x 0x%x 0x%x] mb7 0x%x host_status 0x%x hccr 0x%x\n", +			    command, ictrl, jiffies, mb[0], mb[1], mb[2], mb[3], +			    mb[7], host_status, hccr); +  		} else { -			mb0 = RD_MAILBOX_REG(ha, ®->isp, 0); +			mb[0] = RD_MAILBOX_REG(ha, ®->isp, 0);  			ictrl = RD_REG_WORD(®->isp.ictrl); +			ql_dbg(ql_dbg_mbx + ql_dbg_buffer, vha, 0x1119, +			    "MBX Command timeout for cmd %x, iocontrol=%x jiffies=%lx " +			    "mb[0]=0x%x\n", command, ictrl, jiffies, mb[0]);  		} -		ql_dbg(ql_dbg_mbx + ql_dbg_buffer, vha, 0x1119, -		    "MBX Command timeout for cmd %x, iocontrol=%x jiffies=%lx " -		    "mb[0]=0x%x\n", command, ictrl, jiffies, mb0);  		ql_dump_regs(ql_dbg_mbx + ql_dbg_buffer, vha, 0x1019);  		/* Capture FW dump only, if PCI device active */ @@ -684,7 +697,6 @@ qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr)  	mbx_cmd_t	mc;  	mbx_cmd_t	*mcp = &mc;  	struct qla_hw_data *ha = vha->hw; -	int configured_count;  	ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x111a,  	    "Entered %s.\n", __func__); @@ -707,7 +719,6 @@ qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr)  		/*EMPTY*/  		ql_dbg(ql_dbg_mbx, vha, 0x111b, "Failed=%x.\n", rval);  	} else { -		configured_count = mcp->mb[11];  		ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x118c,  		    "Done %s.\n", __func__);  	} | 
