diff options
-rw-r--r-- | drivers/scsi/NCR5380.c | 8 | ||||
-rw-r--r-- | drivers/scsi/NCR5380.h | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c index b58c6a38fc32..db2739079cbb 100644 --- a/drivers/scsi/NCR5380.c +++ b/drivers/scsi/NCR5380.c @@ -1847,11 +1847,11 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) /* XXX - need to source or sink data here, as appropriate */ } } else { - /* Break up transfer into 3 ms chunks, - * presuming 6 accesses per handshake. + /* Transfer a small chunk so that the + * irq mode lock is not held too long. */ - transfersize = min((unsigned long)cmd->SCp.this_residual, - hostdata->accesses_per_ms / 2); + transfersize = min(cmd->SCp.this_residual, + NCR5380_PIO_CHUNK_SIZE); len = transfersize; NCR5380_transfer_pio(instance, &phase, &len, (unsigned char **)&cmd->SCp.ptr); diff --git a/drivers/scsi/NCR5380.h b/drivers/scsi/NCR5380.h index 2ed61b5d40e6..965d92339455 100644 --- a/drivers/scsi/NCR5380.h +++ b/drivers/scsi/NCR5380.h @@ -250,6 +250,8 @@ struct NCR5380_cmd { #define NCR5380_CMD_SIZE (sizeof(struct NCR5380_cmd)) +#define NCR5380_PIO_CHUNK_SIZE 256 + static inline struct scsi_cmnd *NCR5380_to_scmd(struct NCR5380_cmd *ncmd_ptr) { return ((struct scsi_cmnd *)ncmd_ptr) - 1; |