aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Haverkamp <markh@osdl.org>2005-09-20 15:57:04 -0400
committerJames Bottomley <jejb@mulgrave.(none)>2005-09-26 18:48:29 -0400
commit63a70eeaafe0e17e7f45cba495cb457d06070419 (patch)
treebaaec894a18394c8b4ae6d9eb8ea1e2b31eca001
parent9203344cb8ecc554a1d36eae6661235ed422cf59 (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>
-rw-r--r--drivers/scsi/aacraid/aachba.c8
-rw-r--r--drivers/scsi/aacraid/comminit.c8
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;