aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/NCR5380.h
diff options
context:
space:
mode:
authorFinn Thain <fthain@telegraphics.com.au>2016-10-10 00:46:52 -0400
committerMartin K. Petersen <martin.petersen@oracle.com>2016-11-08 17:29:47 -0500
commitd4408dd7ecff6ed3561f155923738474c585f31d (patch)
treed5b2e08ec4d80487519d6016ad329ae551b52dd5 /drivers/scsi/NCR5380.h
parentscsi: atari_scsi: Make device register accessors re-entrant (diff)
downloadlinux-dev-d4408dd7ecff6ed3561f155923738474c585f31d.tar.xz
linux-dev-d4408dd7ecff6ed3561f155923738474c585f31d.zip
scsi: ncr5380: Simplify register polling limit
When polling a device register under irq lock the polling loop terminates after a given number of jiffies. Make this timeout independent of the HZ setting. All 5380 drivers benefit from this patch, which optimizes the PIO fast path, because they all use PIO transfers (for phases other than DATA IN and DATA OUT). Some cards support only PIO transfers (even for DATA phases). CPU cycles are scarce on some of these systems, so a small improvement here makes a big difference. Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Reviewed-by: Hannes Reinecke <hare@suse.com> Tested-by: Ondrej Zary <linux@rainbow-software.org> Tested-by: Michael Schmitz <schmitzmic@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/NCR5380.h')
-rw-r--r--drivers/scsi/NCR5380.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/scsi/NCR5380.h b/drivers/scsi/NCR5380.h
index 965d92339455..cbb29d604fe0 100644
--- a/drivers/scsi/NCR5380.h
+++ b/drivers/scsi/NCR5380.h
@@ -239,7 +239,7 @@ struct NCR5380_hostdata {
* transfer to handle chip overruns */
struct work_struct main_task;
struct workqueue_struct *work_q;
- unsigned long accesses_per_ms; /* chip register accesses per ms */
+ unsigned long poll_loops; /* register polling limit */
};
#ifdef __KERNEL__
@@ -252,6 +252,9 @@ struct NCR5380_cmd {
#define NCR5380_PIO_CHUNK_SIZE 256
+/* Time limit (ms) to poll registers when IRQs are disabled, e.g. during PDMA */
+#define NCR5380_REG_POLL_TIME 10
+
static inline struct scsi_cmnd *NCR5380_to_scmd(struct NCR5380_cmd *ncmd_ptr)
{
return ((struct scsi_cmnd *)ncmd_ptr) - 1;