aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_mbx.c
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2009-03-24 12:08:01 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-04-03 10:22:46 -0400
commitb64b0e8fd964ce637794d4aaa772db1ae4298ea9 (patch)
tree676892927a4ec44afdb682ab30a58a30e1d50bfd /drivers/scsi/qla2xxx/qla_mbx.c
parentdda772e8e3b9832d3368f84df3a3b7ec7dfbd9f0 (diff)
[SCSI] qla2xxx: Pass in optional extended-initialization control block.
Recent ISPs use this data to configure FCF information. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_mbx.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 4aab7acf7525..91e133bd8e60 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -1043,14 +1043,22 @@ qla2x00_init_firmware(scsi_qla_host_t *vha, uint16_t size)
1043 else 1043 else
1044 mcp->mb[0] = MBC_INITIALIZE_FIRMWARE; 1044 mcp->mb[0] = MBC_INITIALIZE_FIRMWARE;
1045 1045
1046 mcp->mb[1] = 0;
1046 mcp->mb[2] = MSW(ha->init_cb_dma); 1047 mcp->mb[2] = MSW(ha->init_cb_dma);
1047 mcp->mb[3] = LSW(ha->init_cb_dma); 1048 mcp->mb[3] = LSW(ha->init_cb_dma);
1048 mcp->mb[4] = 0;
1049 mcp->mb[5] = 0;
1050 mcp->mb[6] = MSW(MSD(ha->init_cb_dma)); 1049 mcp->mb[6] = MSW(MSD(ha->init_cb_dma));
1051 mcp->mb[7] = LSW(MSD(ha->init_cb_dma)); 1050 mcp->mb[7] = LSW(MSD(ha->init_cb_dma));
1052 mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0; 1051 mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
1053 mcp->in_mb = MBX_5|MBX_4|MBX_0; 1052 if (IS_QLA81XX(ha) && ha->ex_init_cb->ex_version) {
1053 mcp->mb[1] = BIT_0;
1054 mcp->mb[10] = MSW(ha->ex_init_cb_dma);
1055 mcp->mb[11] = LSW(ha->ex_init_cb_dma);
1056 mcp->mb[12] = MSW(MSD(ha->ex_init_cb_dma));
1057 mcp->mb[13] = LSW(MSD(ha->ex_init_cb_dma));
1058 mcp->mb[14] = sizeof(*ha->ex_init_cb);
1059 mcp->out_mb |= MBX_14|MBX_13|MBX_12|MBX_11|MBX_10;
1060 }
1061 mcp->in_mb = MBX_0;
1054 mcp->buf_size = size; 1062 mcp->buf_size = size;
1055 mcp->flags = MBX_DMA_OUT; 1063 mcp->flags = MBX_DMA_OUT;
1056 mcp->tov = MBX_TOV_SECONDS; 1064 mcp->tov = MBX_TOV_SECONDS;