aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_isr.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_isr.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_isr.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index c255bb0268a9..cf6c6ce0b42b 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -21,13 +21,11 @@
21static void qla2x00_mbx_completion(scsi_qla_host_t *, uint16_t); 21static void qla2x00_mbx_completion(scsi_qla_host_t *, uint16_t);
22static void qla2x00_async_event(scsi_qla_host_t *, uint16_t *); 22static void qla2x00_async_event(scsi_qla_host_t *, uint16_t *);
23static void qla2x00_process_completed_request(struct scsi_qla_host *, uint32_t); 23static void qla2x00_process_completed_request(struct scsi_qla_host *, uint32_t);
24void qla2x00_process_response_queue(struct scsi_qla_host *);
25static void qla2x00_status_entry(scsi_qla_host_t *, void *); 24static void qla2x00_status_entry(scsi_qla_host_t *, void *);
26static void qla2x00_status_cont_entry(scsi_qla_host_t *, sts_cont_entry_t *); 25static void qla2x00_status_cont_entry(scsi_qla_host_t *, sts_cont_entry_t *);
27static void qla2x00_error_entry(scsi_qla_host_t *, sts_entry_t *); 26static void qla2x00_error_entry(scsi_qla_host_t *, sts_entry_t *);
28static void qla2x00_ms_entry(scsi_qla_host_t *, ms_iocb_entry_t *); 27static void qla2x00_ms_entry(scsi_qla_host_t *, ms_iocb_entry_t *);
29 28
30void qla24xx_process_response_queue(scsi_qla_host_t *);
31static void qla24xx_ms_entry(scsi_qla_host_t *, struct ct_entry_24xx *); 29static void qla24xx_ms_entry(scsi_qla_host_t *, struct ct_entry_24xx *);
32 30
33/** 31/**
@@ -651,7 +649,10 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
651 "scsi(%ld): [R|Z]IO update completion.\n", 649 "scsi(%ld): [R|Z]IO update completion.\n",
652 ha->host_no)); 650 ha->host_no));
653 651
654 qla2x00_process_response_queue(ha); 652 if (IS_QLA24XX(ha) || IS_QLA25XX(ha))
653 qla24xx_process_response_queue(ha);
654 else
655 qla2x00_process_response_queue(ha);
655 break; 656 break;
656 657
657 case MBA_DISCARD_RND_FRAME: 658 case MBA_DISCARD_RND_FRAME: