Commit 24a08138 authored by Andrew Vasquez's avatar Andrew Vasquez Committed by James Bottomley

[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: default avatarAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent d743de66
...@@ -2432,6 +2432,7 @@ struct qla_hw_data { ...@@ -2432,6 +2432,7 @@ struct qla_hw_data {
#define RISC_START_ADDRESS_2100 0x1000 #define RISC_START_ADDRESS_2100 0x1000
#define RISC_START_ADDRESS_2300 0x800 #define RISC_START_ADDRESS_2300 0x800
#define RISC_START_ADDRESS_2400 0x100000 #define RISC_START_ADDRESS_2400 0x100000
uint16_t fw_xcb_count;
uint16_t fw_options[16]; /* slots: 1,2,3,10,11 */ uint16_t fw_options[16]; /* slots: 1,2,3,10,11 */
uint8_t fw_seriallink_options[4]; uint8_t fw_seriallink_options[4];
......
...@@ -948,8 +948,9 @@ qla2x00_setup_chip(scsi_qla_host_t *vha) ...@@ -948,8 +948,9 @@ qla2x00_setup_chip(scsi_qla_host_t *vha)
ha->max_npiv_vports = ha->max_npiv_vports =
MIN_MULTI_ID_FABRIC - 1; MIN_MULTI_ID_FABRIC - 1;
} }
qla2x00_get_resource_cnts(vha, NULL, NULL, qla2x00_get_resource_cnts(vha, NULL,
NULL, NULL, &ha->max_npiv_vports); &ha->fw_xcb_count, NULL, NULL,
&ha->max_npiv_vports);
if (!fw_major_version && ql2xallocfwdump) if (!fw_major_version && ql2xallocfwdump)
qla2x00_alloc_fw_dump(vha); qla2x00_alloc_fw_dump(vha);
...@@ -1275,8 +1276,11 @@ qla2x00_init_rings(scsi_qla_host_t *vha) ...@@ -1275,8 +1276,11 @@ qla2x00_init_rings(scsi_qla_host_t *vha)
mid_init_cb->count = cpu_to_le16(ha->max_npiv_vports); mid_init_cb->count = cpu_to_le16(ha->max_npiv_vports);
} }
if (IS_FWI2_CAPABLE(ha)) {
mid_init_cb->options = __constant_cpu_to_le16(BIT_1); mid_init_cb->options = __constant_cpu_to_le16(BIT_1);
mid_init_cb->init_cb.execution_throttle =
cpu_to_le16(ha->fw_xcb_count);
}
rval = qla2x00_init_firmware(vha, ha->init_cb_size); rval = qla2x00_init_firmware(vha, ha->init_cb_size);
if (rval) { if (rval) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment