diff options
author | Mark Haverkamp <markh@osdl.org> | 2006-01-11 12:28:29 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2006-01-12 12:55:01 -0500 |
commit | db39363c029cd9e74661ef059a17785d1c62a851 (patch) | |
tree | 68fa6ae11b646103cc5a115400dc753a04ef2c43 /drivers | |
parent | 7686f132653fa3d52d45c3f021215f714094f1ca (diff) |
[SCSI] aacraid: 17 element sg performance update
Received From Mark Salyzyn.
The Jaguar and Corsair class of adapters (2410, 2810, 2610, 21610, CERC)
perform better (about 10% better read performance, write performance
neutral) with current Firmware if the OS limits the number of scatter
gather elements to 17 per request.
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/aacraid.h | 7 | ||||
-rw-r--r-- | drivers/scsi/aacraid/linit.c | 15 |
2 files changed, 18 insertions, 4 deletions
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 30fd8d6e3f31..66dbb6d2c506 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h | |||
@@ -532,6 +532,13 @@ struct aac_driver_ident | |||
532 | #define AAC_QUIRK_MASTER 0x0008 | 532 | #define AAC_QUIRK_MASTER 0x0008 |
533 | 533 | ||
534 | /* | 534 | /* |
535 | * Some adapter firmware perform poorly when it must split up scatter gathers | ||
536 | * in order to deal with the limits of the underlying CHIM. This limit in this | ||
537 | * class of adapters is 17 scatter gather elements. | ||
538 | */ | ||
539 | #define AAC_QUIRK_17SG 0x0010 | ||
540 | |||
541 | /* | ||
535 | * The adapter interface specs all queues to be located in the same | 542 | * The adapter interface specs all queues to be located in the same |
536 | * physically contigous block. The host structure that defines the | 543 | * physically contigous block. The host structure that defines the |
537 | * commuication queues will assume they are each a separate physically | 544 | * commuication queues will assume they are each a separate physically |
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index d183a072a9d7..0bf5f9a943e8 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c | |||
@@ -200,10 +200,10 @@ static struct aac_driver_ident aac_drivers[] = { | |||
200 | { aac_rkt_init, "aacraid", "ADAPTEC ", "Callisto ", 2, AAC_QUIRK_MASTER }, /* Jupiter Platform */ | 200 | { aac_rkt_init, "aacraid", "ADAPTEC ", "Callisto ", 2, AAC_QUIRK_MASTER }, /* Jupiter Platform */ |
201 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2020SA ", 1 }, /* ASR-2020SA SATA PCI-X ZCR (Skyhawk) */ | 201 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2020SA ", 1 }, /* ASR-2020SA SATA PCI-X ZCR (Skyhawk) */ |
202 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2025SA ", 1 }, /* ASR-2025SA SATA SO-DIMM PCI-X ZCR (Terminator) */ | 202 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2025SA ", 1 }, /* ASR-2025SA SATA SO-DIMM PCI-X ZCR (Terminator) */ |
203 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2410SA SATA ", 1 }, /* AAR-2410SA PCI SATA 4ch (Jaguar II) */ | 203 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2410SA SATA ", 1, AAC_QUIRK_17SG }, /* AAR-2410SA PCI SATA 4ch (Jaguar II) */ |
204 | { aac_rx_init, "aacraid", "DELL ", "CERC SR2 ", 1 }, /* CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) */ | 204 | { aac_rx_init, "aacraid", "DELL ", "CERC SR2 ", 1, AAC_QUIRK_17SG }, /* CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) */ |
205 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2810SA SATA ", 1 }, /* AAR-2810SA PCI SATA 8ch (Corsair-8) */ | 205 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2810SA SATA ", 1, AAC_QUIRK_17SG }, /* AAR-2810SA PCI SATA 8ch (Corsair-8) */ |
206 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-21610SA SATA", 1 }, /* AAR-21610SA PCI SATA 16ch (Corsair-16) */ | 206 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-21610SA SATA", 1, AAC_QUIRK_17SG }, /* AAR-21610SA PCI SATA 16ch (Corsair-16) */ |
207 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2026ZCR ", 1 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */ | 207 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2026ZCR ", 1 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */ |
208 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2610SA ", 1 }, /* SATA 6Ch (Bearcat) */ | 208 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2610SA ", 1 }, /* SATA 6Ch (Bearcat) */ |
209 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2240S ", 1 }, /* ASR-2240S (SabreExpress) */ | 209 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2240S ", 1 }, /* ASR-2240S (SabreExpress) */ |
@@ -853,6 +853,13 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, | |||
853 | = (aac->scsi_host_ptr->sg_tablesize * 8) + 112; | 853 | = (aac->scsi_host_ptr->sg_tablesize * 8) + 112; |
854 | } | 854 | } |
855 | 855 | ||
856 | if ((aac_drivers[index].quirks & AAC_QUIRK_17SG) && | ||
857 | (aac->scsi_host_ptr->sg_tablesize > 17)) { | ||
858 | aac->scsi_host_ptr->sg_tablesize = 17; | ||
859 | aac->scsi_host_ptr->max_sectors | ||
860 | = (aac->scsi_host_ptr->sg_tablesize * 8) + 112; | ||
861 | } | ||
862 | |||
856 | /* | 863 | /* |
857 | * Firware printf works only with older firmware. | 864 | * Firware printf works only with older firmware. |
858 | */ | 865 | */ |