diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2009-03-24 12:08:16 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-04-03 10:22:52 -0400 |
commit | 24a081386e4236e10e80af4c62d5f6e68feb2081 (patch) | |
tree | 708c9da86af5fd5ddc7a825eae275b007cefb8ee /drivers | |
parent | d743de66754a662399bd9fe7da7a34e189f71876 (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.h | 1 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 12 |
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) { |