summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata/ata-all.c
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2003-09-01 11:13:21 +0000
committersos <sos@FreeBSD.org>2003-09-01 11:13:21 +0000
commitbd60079a794dfaecf2396af9bc31b5453e1a7d9f (patch)
treecc96708884f4cf88eff54e07ab5063046ebf73c2 /sys/dev/ata/ata-all.c
parent5889c70ae89bd8f20426256b58a39555217022b3 (diff)
downloadFreeBSD-src-bd60079a794dfaecf2396af9bc31b5453e1a7d9f.zip
FreeBSD-src-bd60079a794dfaecf2396af9bc31b5453e1a7d9f.tar.gz
Rearrange the probe code yet again.
Diffstat (limited to 'sys/dev/ata/ata-all.c')
-rw-r--r--sys/dev/ata/ata-all.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c
index 71260fd..810e02e 100644
--- a/sys/dev/ata/ata-all.c
+++ b/sys/dev/ata/ata-all.c
@@ -523,14 +523,19 @@ ata_getparam(struct ata_device *atadev, u_int8_t command)
if (request) {
request->device = atadev;
request->u.ata.command = command;
- request->flags = ATA_R_READ;
+ request->flags = (ATA_R_READ | ATA_R_QUIET);
request->data = (caddr_t)atacap;
request->timeout = 2;
- request->retries = 2;
+ request->retries = 3;
request->bytecount = sizeof(struct ata_params);
request->transfersize = DEV_BSIZE;
- ata_queue_request(request);
- error = request->result;
+ while (request->retries) {
+ ata_queue_request(request);
+ if (!(error = request->result))
+ break;
+ request->flags &= ~ATA_R_QUIET;
+ request->retries--;
+ }
ata_free_request(request);
}
if (error) {
OpenPOWER on IntegriCloud