aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_iocb.c
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2005-10-27 14:09:48 -0400
committerJames Bottomley <jejb@mulgrave.(none)>2005-10-28 12:52:11 -0400
commit4fdfefe52944f5c4132a372ed5c208962a73c3f2 (patch)
tree23e4c9cb3f899d82e07fcfc55d75744b919415e5 /drivers/scsi/qla2xxx/qla_iocb.c
parent0eedfcf0cdac30b14d1e6c99abc6604347ef0af8 (diff)
[SCSI] qla2xxx: Add support to dynamically enable/disable ZIO.
ISP23xx and ISP24xx chips have support for an adaptive method of posting SCSI command completions for multiple SCSI commands during a single system interrupt. SCSI commands are placed on the system response queue without interrupting the host until 1) a delay timer expires; or 2) a SCSI command completes with an error. As long as the host software (qla2xxx) services the response queue for completions (this polling is done during queuecommand()) within the 'delay timer' period, the firmware will not generate system interrupt. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_iocb.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_iocb.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
index 37f82e2cd7f..d7355627f11 100644
--- a/drivers/scsi/qla2xxx/qla_iocb.c
+++ b/drivers/scsi/qla2xxx/qla_iocb.c
@@ -440,6 +440,11 @@ qla2x00_start_scsi(srb_t *sp)
440 WRT_REG_WORD(ISP_REQ_Q_IN(ha, reg), ha->req_ring_index); 440 WRT_REG_WORD(ISP_REQ_Q_IN(ha, reg), ha->req_ring_index);
441 RD_REG_WORD_RELAXED(ISP_REQ_Q_IN(ha, reg)); /* PCI Posting. */ 441 RD_REG_WORD_RELAXED(ISP_REQ_Q_IN(ha, reg)); /* PCI Posting. */
442 442
443 /* Manage unprocessed RIO/ZIO commands in response queue. */
444 if (ha->flags.process_response_queue &&
445 ha->response_ring_ptr->signature != RESPONSE_PROCESSED)
446 qla2x00_process_response_queue(ha);
447
443 spin_unlock_irqrestore(&ha->hardware_lock, flags); 448 spin_unlock_irqrestore(&ha->hardware_lock, flags);
444 return (QLA_SUCCESS); 449 return (QLA_SUCCESS);
445 450
@@ -877,6 +882,11 @@ qla24xx_start_scsi(srb_t *sp)
877 WRT_REG_DWORD(&reg->req_q_in, ha->req_ring_index); 882 WRT_REG_DWORD(&reg->req_q_in, ha->req_ring_index);
878 RD_REG_DWORD_RELAXED(&reg->req_q_in); /* PCI Posting. */ 883 RD_REG_DWORD_RELAXED(&reg->req_q_in); /* PCI Posting. */
879 884
885 /* Manage unprocessed RIO/ZIO commands in response queue. */
886 if (ha->flags.process_response_queue &&
887 ha->response_ring_ptr->signature != RESPONSE_PROCESSED)
888 qla24xx_process_response_queue(ha);
889
880 spin_unlock_irqrestore(&ha->hardware_lock, flags); 890 spin_unlock_irqrestore(&ha->hardware_lock, flags);
881 return QLA_SUCCESS; 891 return QLA_SUCCESS;
882 892