diff options
author | Mark Haverkamp <markh@osdl.org> | 2005-09-20 15:57:04 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-09-26 18:48:29 -0400 |
commit | 63a70eeaafe0e17e7f45cba495cb457d06070419 (patch) | |
tree | baaec894a18394c8b4ae6d9eb8ea1e2b31eca001 /drivers | |
parent | 9203344cb8ecc554a1d36eae6661235ed422cf59 (diff) |
[SCSI] aacraid: fib size math fix
Received from Mark Salyzyn from Adaptec.
The size of the command packet's scatter gather list maximum size was
miscalculated in the low range leading to the driver initialization
limiting the maximum i/o size that could go to the Adapter. There were
no negative operational side effects resulting from this bad math, only
a subtle limit in performance of the Adapter at the top end of the
range.
Signed-off-by: Mark Haverkamp <markh@osdl.org>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/aacraid/aachba.c | 8 | ||||
-rw-r--r-- | drivers/scsi/aacraid/comminit.c | 8 |
2 files changed, 8 insertions, 8 deletions
diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c index a0735a247e5b..93416f760e5a 100644 --- a/drivers/scsi/aacraid/aachba.c +++ b/drivers/scsi/aacraid/aachba.c | |||
@@ -843,8 +843,8 @@ int aac_get_adapter_info(struct aac_dev* dev) | |||
843 | if (!(dev->raw_io_interface)) { | 843 | if (!(dev->raw_io_interface)) { |
844 | dev->scsi_host_ptr->sg_tablesize = (dev->max_fib_size - | 844 | dev->scsi_host_ptr->sg_tablesize = (dev->max_fib_size - |
845 | sizeof(struct aac_fibhdr) - | 845 | sizeof(struct aac_fibhdr) - |
846 | sizeof(struct aac_write) + sizeof(struct sgmap)) / | 846 | sizeof(struct aac_write) + sizeof(struct sgentry)) / |
847 | sizeof(struct sgmap); | 847 | sizeof(struct sgentry); |
848 | if (dev->dac_support) { | 848 | if (dev->dac_support) { |
849 | /* | 849 | /* |
850 | * 38 scatter gather elements | 850 | * 38 scatter gather elements |
@@ -853,8 +853,8 @@ int aac_get_adapter_info(struct aac_dev* dev) | |||
853 | (dev->max_fib_size - | 853 | (dev->max_fib_size - |
854 | sizeof(struct aac_fibhdr) - | 854 | sizeof(struct aac_fibhdr) - |
855 | sizeof(struct aac_write64) + | 855 | sizeof(struct aac_write64) + |
856 | sizeof(struct sgmap64)) / | 856 | sizeof(struct sgentry64)) / |
857 | sizeof(struct sgmap64); | 857 | sizeof(struct sgentry64); |
858 | } | 858 | } |
859 | dev->scsi_host_ptr->max_sectors = AAC_MAX_32BIT_SGBCOUNT; | 859 | dev->scsi_host_ptr->max_sectors = AAC_MAX_32BIT_SGBCOUNT; |
860 | if(!(dev->adapter_info.options & AAC_OPT_NEW_COMM)) { | 860 | if(!(dev->adapter_info.options & AAC_OPT_NEW_COMM)) { |
diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c index 9e054a509b41..59a341b2aedc 100644 --- a/drivers/scsi/aacraid/comminit.c +++ b/drivers/scsi/aacraid/comminit.c | |||
@@ -313,8 +313,8 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev) | |||
313 | dev->max_fib_size = sizeof(struct hw_fib); | 313 | dev->max_fib_size = sizeof(struct hw_fib); |
314 | dev->sg_tablesize = host->sg_tablesize = (dev->max_fib_size | 314 | dev->sg_tablesize = host->sg_tablesize = (dev->max_fib_size |
315 | - sizeof(struct aac_fibhdr) | 315 | - sizeof(struct aac_fibhdr) |
316 | - sizeof(struct aac_write) + sizeof(struct sgmap)) | 316 | - sizeof(struct aac_write) + sizeof(struct sgentry)) |
317 | / sizeof(struct sgmap); | 317 | / sizeof(struct sgentry); |
318 | dev->raw_io_64 = 0; | 318 | dev->raw_io_64 = 0; |
319 | if ((!aac_adapter_sync_cmd(dev, GET_ADAPTER_PROPERTIES, | 319 | if ((!aac_adapter_sync_cmd(dev, GET_ADAPTER_PROPERTIES, |
320 | 0, 0, 0, 0, 0, 0, status+0, status+1, status+2, NULL, NULL)) && | 320 | 0, 0, 0, 0, 0, 0, status+0, status+1, status+2, NULL, NULL)) && |
@@ -349,8 +349,8 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev) | |||
349 | dev->max_fib_size = 512; | 349 | dev->max_fib_size = 512; |
350 | dev->sg_tablesize = host->sg_tablesize | 350 | dev->sg_tablesize = host->sg_tablesize |
351 | = (512 - sizeof(struct aac_fibhdr) | 351 | = (512 - sizeof(struct aac_fibhdr) |
352 | - sizeof(struct aac_write) + sizeof(struct sgmap)) | 352 | - sizeof(struct aac_write) + sizeof(struct sgentry)) |
353 | / sizeof(struct sgmap); | 353 | / sizeof(struct sgentry); |
354 | host->can_queue = AAC_NUM_IO_FIB; | 354 | host->can_queue = AAC_NUM_IO_FIB; |
355 | } else if (acbsize == 2048) { | 355 | } else if (acbsize == 2048) { |
356 | host->max_sectors = 512; | 356 | host->max_sectors = 512; |