summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2000-08-06 18:01:47 +0000
committersos <sos@FreeBSD.org>2000-08-06 18:01:47 +0000
commit2983c6d9ab2bd6effec84af5416e6029e4e41ca0 (patch)
tree5e9a85ec296cb9562b22079d1717ac8cbd69d768 /sys
parentb98ae04f64dc0a0607bbebacf98c61cf1ea49a8b (diff)
downloadFreeBSD-src-2983c6d9ab2bd6effec84af5416e6029e4e41ca0.zip
FreeBSD-src-2983c6d9ab2bd6effec84af5416e6029e4e41ca0.tar.gz
Be a bit more restrictive in using multisector transfers.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/ata/ata-disk.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/dev/ata/ata-disk.c b/sys/dev/ata/ata-disk.c
index a11e766..cd09f83 100644
--- a/sys/dev/ata/ata-disk.c
+++ b/sys/dev/ata/ata-disk.c
@@ -117,11 +117,13 @@ ad_attach(struct ata_softc *scp, int32_t device)
/* use multiple sectors/interrupt if device supports it */
adp->transfersize = DEV_BSIZE;
- secsperint = max(1, min(AD_PARAM->nsecperint, 16));
- if (!ata_command(adp->controller, adp->unit, ATA_C_SET_MULTI,
- 0, 0, 0, secsperint, 0, ATA_WAIT_INTR) &&
- ata_wait(adp->controller, adp->unit, ATA_S_READY) >= 0)
+ if (ad_version(AD_PARAM->versmajor)) {
+ secsperint = max(1, min(AD_PARAM->nsecperint, 16));
+ if (!ata_command(adp->controller, adp->unit, ATA_C_SET_MULTI,
+ 0, 0, 0, secsperint, 0, ATA_WAIT_INTR) &&
+ ata_wait(adp->controller, adp->unit, ATA_S_READY) >= 0)
adp->transfersize *= secsperint;
+ }
/* enable read/write cacheing if not default on device */
if (ata_command(adp->controller, adp->unit, ATA_C_SETFEATURES,
OpenPOWER on IntegriCloud