summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthomas <thomas@FreeBSD.org>2004-03-04 15:37:39 +0000
committerthomas <thomas@FreeBSD.org>2004-03-04 15:37:39 +0000
commitb924bcd14423c7d465eaaa04aa306009a1eceed5 (patch)
tree98e4759bcf6b5e88d9d9f59a31cf277fde2be24e
parent996df05b7818a9d71c34cee0968322c76d8a0ff2 (diff)
downloadFreeBSD-src-b924bcd14423c7d465eaaa04aa306009a1eceed5.zip
FreeBSD-src-b924bcd14423c7d465eaaa04aa306009a1eceed5.tar.gz
Use auto-sense data provided by the lowlevel ATA code.
-rw-r--r--sys/dev/ata/atapi-cam.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/dev/ata/atapi-cam.c b/sys/dev/ata/atapi-cam.c
index 7fb897e..5d2706b 100644
--- a/sys/dev/ata/atapi-cam.c
+++ b/sys/dev/ata/atapi-cam.c
@@ -556,7 +556,7 @@ atapi_cb(struct ata_request *request)
csio = &hcb->ccb->csio;
#ifdef CAMDEBUG
-# define err (request->error)
+# define err (request->u.atapi.sense_key)
if (CAM_DEBUGGED(csio->ccb_h.path, CAM_DEBUG_CDB)) {
printf("atapi_cb: hcb@%p error = %02x: (sk = %02x%s%s%s)\n",
hcb, err, err >> 4,
@@ -579,6 +579,7 @@ atapi_cb(struct ata_request *request)
csio->scsi_status = SCSI_STATUS_CHECK_COND;
if ((csio->ccb_h.flags & CAM_DIS_AUTOSENSE) == 0) {
+#if 0
static const int8_t ccb[16] = { ATAPI_REQUEST_SENSE, 0, 0, 0,
sizeof(struct atapi_sense), 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0 };
@@ -595,6 +596,14 @@ atapi_cb(struct ata_request *request)
mtx_unlock (&Giant);
ata_queue_request(request);
return;
+#else
+ /* The ATA driver has already requested sense for us. */
+ if (request->error == 0) {
+ /* The ATA autosense suceeded. */
+ bcopy (&request->u.atapi.sense_data, &csio->sense_data, sizeof(struct atapi_sense));
+ csio->ccb_h.status |= CAM_AUTOSNS_VALID;
+ }
+#endif
}
} else {
rc = CAM_REQ_CMP;
OpenPOWER on IntegriCloud