aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSalyzyn, Mark <Mark_Salyzyn@adaptec.com>2008-02-06 12:00:46 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-02-07 19:02:44 -0500
commit62e9f5c4671a3026639b01ec84a3063f03bead4c (patch)
tree7e5e124c01cf607428122cc3c38579ef9343a077 /drivers
parent4d2de3a50ce19af2008a90636436a1bf5b3b697b (diff)
[SCSI] aacraid: pci_set_dma_max_seg_size opened up for late model controllers
This patch ensures that the modern adapters get a maximum sg segment size on par with the maximum transfer size. Added some localized janitor fixes to the discussion patch I used with Fujita. FUJITA Tomonori [mailto:fujita.tomonori@lab.ntt.co.jp] sez: > I think that setting the proper maximum segment size for the late > model cards (as you did above) makes sense. Signed-off-by: Mark Salyzyn <aacraid@adaptec.com> Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/aacraid/linit.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index fb0886140dd7..e80d2a0c46af 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -1130,31 +1130,29 @@ static int __devinit aac_probe_one(struct pci_dev *pdev,
1130 if (error < 0) 1130 if (error < 0)
1131 goto out_deinit; 1131 goto out_deinit;
1132 1132
1133 if (!(aac->adapter_info.options & AAC_OPT_NEW_COMM)) {
1134 error = pci_set_dma_max_seg_size(pdev, 65536);
1135 if (error)
1136 goto out_deinit;
1137 }
1138
1139 /* 1133 /*
1140 * Lets override negotiations and drop the maximum SG limit to 34 1134 * Lets override negotiations and drop the maximum SG limit to 34
1141 */ 1135 */
1142 if ((aac_drivers[index].quirks & AAC_QUIRK_34SG) && 1136 if ((aac_drivers[index].quirks & AAC_QUIRK_34SG) &&
1143 (aac->scsi_host_ptr->sg_tablesize > 34)) { 1137 (shost->sg_tablesize > 34)) {
1144 aac->scsi_host_ptr->sg_tablesize = 34; 1138 shost->sg_tablesize = 34;
1145 aac->scsi_host_ptr->max_sectors 1139 shost->max_sectors = (shost->sg_tablesize * 8) + 112;
1146 = (aac->scsi_host_ptr->sg_tablesize * 8) + 112;
1147 } 1140 }
1148 1141
1149 if ((aac_drivers[index].quirks & AAC_QUIRK_17SG) && 1142 if ((aac_drivers[index].quirks & AAC_QUIRK_17SG) &&
1150 (aac->scsi_host_ptr->sg_tablesize > 17)) { 1143 (shost->sg_tablesize > 17)) {
1151 aac->scsi_host_ptr->sg_tablesize = 17; 1144 shost->sg_tablesize = 17;
1152 aac->scsi_host_ptr->max_sectors 1145 shost->max_sectors = (shost->sg_tablesize * 8) + 112;
1153 = (aac->scsi_host_ptr->sg_tablesize * 8) + 112;
1154 } 1146 }
1155 1147
1148 error = pci_set_dma_max_seg_size(pdev,
1149 (aac->adapter_info.options & AAC_OPT_NEW_COMM) ?
1150 (shost->max_sectors << 9) : 65536);
1151 if (error)
1152 goto out_deinit;
1153
1156 /* 1154 /*
1157 * Firware printf works only with older firmware. 1155 * Firmware printf works only with older firmware.
1158 */ 1156 */
1159 if (aac_drivers[index].quirks & AAC_QUIRK_34SG) 1157 if (aac_drivers[index].quirks & AAC_QUIRK_34SG)
1160 aac->printf_enabled = 1; 1158 aac->printf_enabled = 1;