diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2009-10-13 18:16:49 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-12-04 13:00:12 -0500 |
commit | f3a0a77e8df2f5c78648ce5971176e610dbc35c0 (patch) | |
tree | 67730f2620f35eef999ad8d5cb6d83dc497a536a /drivers/scsi | |
parent | b5d0329f424df20c67d0d9ee979fbd2b8b5ed74d (diff) |
[SCSI] qla2xxx: Retrieve firmware's maximum number of supported FCFs.
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_gbl.h | 2 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 2 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_mbx.c | 13 |
3 files changed, 11 insertions, 6 deletions
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h index 14e0562851cb..e21851358509 100644 --- a/drivers/scsi/qla2xxx/qla_gbl.h +++ b/drivers/scsi/qla2xxx/qla_gbl.h | |||
@@ -247,7 +247,7 @@ qla2x00_get_id_list(scsi_qla_host_t *, void *, dma_addr_t, uint16_t *); | |||
247 | 247 | ||
248 | extern int | 248 | extern int |
249 | qla2x00_get_resource_cnts(scsi_qla_host_t *, uint16_t *, uint16_t *, | 249 | qla2x00_get_resource_cnts(scsi_qla_host_t *, uint16_t *, uint16_t *, |
250 | uint16_t *, uint16_t *, uint16_t *); | 250 | uint16_t *, uint16_t *, uint16_t *, uint16_t *); |
251 | 251 | ||
252 | extern int | 252 | extern int |
253 | qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map); | 253 | qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map); |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index c2494ca6ba1c..c8b24b65e529 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -1203,7 +1203,7 @@ qla2x00_setup_chip(scsi_qla_host_t *vha) | |||
1203 | } | 1203 | } |
1204 | qla2x00_get_resource_cnts(vha, NULL, | 1204 | qla2x00_get_resource_cnts(vha, NULL, |
1205 | &ha->fw_xcb_count, NULL, NULL, | 1205 | &ha->fw_xcb_count, NULL, NULL, |
1206 | &ha->max_npiv_vports); | 1206 | &ha->max_npiv_vports, NULL); |
1207 | 1207 | ||
1208 | if (!fw_major_version && ql2xallocfwdump) | 1208 | if (!fw_major_version && ql2xallocfwdump) |
1209 | qla2x00_alloc_fw_dump(vha); | 1209 | qla2x00_alloc_fw_dump(vha); |
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index b6202fe118ac..a10d41bf8f26 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c | |||
@@ -2006,7 +2006,7 @@ qla2x00_get_id_list(scsi_qla_host_t *vha, void *id_list, dma_addr_t id_list_dma, | |||
2006 | int | 2006 | int |
2007 | qla2x00_get_resource_cnts(scsi_qla_host_t *vha, uint16_t *cur_xchg_cnt, | 2007 | qla2x00_get_resource_cnts(scsi_qla_host_t *vha, uint16_t *cur_xchg_cnt, |
2008 | uint16_t *orig_xchg_cnt, uint16_t *cur_iocb_cnt, | 2008 | uint16_t *orig_xchg_cnt, uint16_t *cur_iocb_cnt, |
2009 | uint16_t *orig_iocb_cnt, uint16_t *max_npiv_vports) | 2009 | uint16_t *orig_iocb_cnt, uint16_t *max_npiv_vports, uint16_t *max_fcfs) |
2010 | { | 2010 | { |
2011 | int rval; | 2011 | int rval; |
2012 | mbx_cmd_t mc; | 2012 | mbx_cmd_t mc; |
@@ -2017,6 +2017,8 @@ qla2x00_get_resource_cnts(scsi_qla_host_t *vha, uint16_t *cur_xchg_cnt, | |||
2017 | mcp->mb[0] = MBC_GET_RESOURCE_COUNTS; | 2017 | mcp->mb[0] = MBC_GET_RESOURCE_COUNTS; |
2018 | mcp->out_mb = MBX_0; | 2018 | mcp->out_mb = MBX_0; |
2019 | mcp->in_mb = MBX_11|MBX_10|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; | 2019 | mcp->in_mb = MBX_11|MBX_10|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; |
2020 | if (IS_QLA81XX(vha->hw)) | ||
2021 | mcp->in_mb |= MBX_12; | ||
2020 | mcp->tov = MBX_TOV_SECONDS; | 2022 | mcp->tov = MBX_TOV_SECONDS; |
2021 | mcp->flags = 0; | 2023 | mcp->flags = 0; |
2022 | rval = qla2x00_mailbox_command(vha, mcp); | 2024 | rval = qla2x00_mailbox_command(vha, mcp); |
@@ -2027,9 +2029,10 @@ qla2x00_get_resource_cnts(scsi_qla_host_t *vha, uint16_t *cur_xchg_cnt, | |||
2027 | vha->host_no, mcp->mb[0])); | 2029 | vha->host_no, mcp->mb[0])); |
2028 | } else { | 2030 | } else { |
2029 | DEBUG11(printk("%s(%ld): done. mb1=%x mb2=%x mb3=%x mb6=%x " | 2031 | DEBUG11(printk("%s(%ld): done. mb1=%x mb2=%x mb3=%x mb6=%x " |
2030 | "mb7=%x mb10=%x mb11=%x.\n", __func__, vha->host_no, | 2032 | "mb7=%x mb10=%x mb11=%x mb12=%x.\n", __func__, |
2031 | mcp->mb[1], mcp->mb[2], mcp->mb[3], mcp->mb[6], mcp->mb[7], | 2033 | vha->host_no, mcp->mb[1], mcp->mb[2], mcp->mb[3], |
2032 | mcp->mb[10], mcp->mb[11])); | 2034 | mcp->mb[6], mcp->mb[7], mcp->mb[10], mcp->mb[11], |
2035 | mcp->mb[12])); | ||
2033 | 2036 | ||
2034 | if (cur_xchg_cnt) | 2037 | if (cur_xchg_cnt) |
2035 | *cur_xchg_cnt = mcp->mb[3]; | 2038 | *cur_xchg_cnt = mcp->mb[3]; |
@@ -2041,6 +2044,8 @@ qla2x00_get_resource_cnts(scsi_qla_host_t *vha, uint16_t *cur_xchg_cnt, | |||
2041 | *orig_iocb_cnt = mcp->mb[10]; | 2044 | *orig_iocb_cnt = mcp->mb[10]; |
2042 | if (vha->hw->flags.npiv_supported && max_npiv_vports) | 2045 | if (vha->hw->flags.npiv_supported && max_npiv_vports) |
2043 | *max_npiv_vports = mcp->mb[11]; | 2046 | *max_npiv_vports = mcp->mb[11]; |
2047 | if (IS_QLA81XX(vha->hw) && max_fcfs) | ||
2048 | *max_fcfs = mcp->mb[12]; | ||
2044 | } | 2049 | } |
2045 | 2050 | ||
2046 | return (rval); | 2051 | return (rval); |