scsi: mac_scsi: Enable scatter/gather by default
authorFinn Thain <fthain@linux-m68k.org>
Wed, 7 Aug 2024 03:36:28 +0000 (13:36 +1000)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 13 Aug 2024 02:05:49 +0000 (22:05 -0400)
Now that FLAG_DMA_FIXUP has itself been fixed up, it can be used to enable
scatter/gather. Increase the default value for sg_tablesize to SG_ALL for
those systems which are compatible with FLAG_DMA_FIXUP.

Tested-by: Stan Johnson <userm57@yahoo.com>
Signed-off-by: Finn Thain <fthain@linux-m68k.org>
Link: https://lore.kernel.org/r/f155ba5ce93055cbc6ac6d4026673f40f826edb8.1723001788.git.fthain@linux-m68k.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/mac_scsi.c

index 3958f7dc679f0a885b6b705244d44b201de35a3a..f225bb20aa2201c897a71dc80bc6afdc33c4dce7 100644 (file)
@@ -432,7 +432,7 @@ static struct scsi_host_template mac_scsi_template = {
        .eh_host_reset_handler  = macscsi_host_reset,
        .can_queue              = 16,
        .this_id                = 7,
-       .sg_tablesize           = 1,
+       .sg_tablesize           = SG_ALL,
        .cmd_per_lun            = 2,
        .dma_boundary           = PAGE_SIZE - 1,
        .cmd_size               = sizeof(struct NCR5380_cmd),
@@ -470,6 +470,9 @@ static int __init mac_scsi_probe(struct platform_device *pdev)
        if (setup_hostid >= 0)
                mac_scsi_template.this_id = setup_hostid & 7;
 
+       if (macintosh_config->ident == MAC_MODEL_IIFX)
+               mac_scsi_template.sg_tablesize = 1;
+
        instance = scsi_host_alloc(&mac_scsi_template,
                                   sizeof(struct NCR5380_hostdata));
        if (!instance)
@@ -491,6 +494,9 @@ static int __init mac_scsi_probe(struct platform_device *pdev)
 
        host_flags |= setup_toshiba_delay > 0 ? FLAG_TOSHIBA_DELAY : 0;
 
+       if (instance->sg_tablesize > 1)
+               host_flags |= FLAG_DMA_FIXUP;
+
        error = NCR5380_init(instance, host_flags | FLAG_LATE_DMA_SETUP);
        if (error)
                goto fail_init;