aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2009-03-24 12:08:16 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-04-03 10:22:52 -0400
commit24a081386e4236e10e80af4c62d5f6e68feb2081 (patch)
tree708c9da86af5fd5ddc7a825eae275b007cefb8ee /drivers
parentd743de66754a662399bd9fe7da7a34e189f71876 (diff)
[SCSI] qla2xxx: Explicitly set the execution-throttle with recent ISPs.
Firmware semantics changed for 24xx and above ISPs in their handling of the specified execution-throttle passed during firmware initialization. The original codes use of a theoretical maximum (0xffff, as carried over from earlier ISPs) could in fact act as a throttle in some circumstances. Now set the value based of the firmware's own 'resource' (exchange IOCBs) capabilities. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h1
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c12
2 files changed, 9 insertions, 4 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 1a84dbf82510..e3d4d48905ee 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -2432,6 +2432,7 @@ struct qla_hw_data {
2432#define RISC_START_ADDRESS_2100 0x1000 2432#define RISC_START_ADDRESS_2100 0x1000
2433#define RISC_START_ADDRESS_2300 0x800 2433#define RISC_START_ADDRESS_2300 0x800
2434#define RISC_START_ADDRESS_2400 0x100000 2434#define RISC_START_ADDRESS_2400 0x100000
2435 uint16_t fw_xcb_count;
2435 2436
2436 uint16_t fw_options[16]; /* slots: 1,2,3,10,11 */ 2437 uint16_t fw_options[16]; /* slots: 1,2,3,10,11 */
2437 uint8_t fw_seriallink_options[4]; 2438 uint8_t fw_seriallink_options[4];
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index f90fd3774f19..bd7dd84c0648 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -948,8 +948,9 @@ qla2x00_setup_chip(scsi_qla_host_t *vha)
948 ha->max_npiv_vports = 948 ha->max_npiv_vports =
949 MIN_MULTI_ID_FABRIC - 1; 949 MIN_MULTI_ID_FABRIC - 1;
950 } 950 }
951 qla2x00_get_resource_cnts(vha, NULL, NULL, 951 qla2x00_get_resource_cnts(vha, NULL,
952 NULL, NULL, &ha->max_npiv_vports); 952 &ha->fw_xcb_count, NULL, NULL,
953 &ha->max_npiv_vports);
953 954
954 if (!fw_major_version && ql2xallocfwdump) 955 if (!fw_major_version && ql2xallocfwdump)
955 qla2x00_alloc_fw_dump(vha); 956 qla2x00_alloc_fw_dump(vha);
@@ -1275,8 +1276,11 @@ qla2x00_init_rings(scsi_qla_host_t *vha)
1275 mid_init_cb->count = cpu_to_le16(ha->max_npiv_vports); 1276 mid_init_cb->count = cpu_to_le16(ha->max_npiv_vports);
1276 } 1277 }
1277 1278
1278 1279 if (IS_FWI2_CAPABLE(ha)) {
1279 mid_init_cb->options = __constant_cpu_to_le16(BIT_1); 1280 mid_init_cb->options = __constant_cpu_to_le16(BIT_1);
1281 mid_init_cb->init_cb.execution_throttle =
1282 cpu_to_le16(ha->fw_xcb_count);
1283 }
1280 1284
1281 rval = qla2x00_init_firmware(vha, ha->init_cb_size); 1285 rval = qla2x00_init_firmware(vha, ha->init_cb_size);
1282 if (rval) { 1286 if (rval) {