summaryrefslogtreecommitdiff
path: root/sys/dev/ic/adwlib.h
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2000-12-08 00:03:32 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2000-12-08 00:03:32 +0000
commit7898215858d9a2a3d7d2a5438f6f04098ce2cada (patch)
treefc45a18ceea3a8e18d377a21b610d5c0e8b4b1a4 /sys/dev/ic/adwlib.h
parent033e26dc53a8083af5c64cb32286ace159b119c8 (diff)
This update should cause the adw driver to:
- actually check the returned scsi_status value and act accordingly instead of ALWAYS returning XS_NOERROR - always return the scsi status value in xs->status for completed requests - no longer reference ccb->xs and ccb->dmamap_xfer if an 'unallocated' ccb is encountered - immediately remove the ccb adw_isr_callback is working on from the pending list, leaving it in limbo until it is put on the free list just before any return - 'freeze' a target only when a scsi_status indicating it is busy is encountered, and 'thaw' a target whenever a bus reset is done or a request completes - check done_status, host_status and scsi_status in that order as is done in the linux driver and was done here until very recently, which seems cleaner to me. But opinions may vary. The only behaviour change that should result is that done_status of QD_NO_STATUS no longer causes a check of host_status values, but is an error causing a XS_DRIVER_STUFFUP - produce a more general error message with actual values for host_status, scsi_status and done_status values, with references to adw(4) for more details on the error where appropriate (man page update coming) - take what seems like appropriate action for all known host_status, scsi_status and done_status values with more use of XS_RESET where appropriate - use adw_reset_bus() instead of AdwResetSCSIBus() in adw_async_callback() so pending requests are requeued and devices left unfrozen when this happens - print an error message with the code # when adw_async_callback is called with an unknown code.
Diffstat (limited to 'sys/dev/ic/adwlib.h')
-rw-r--r--sys/dev/ic/adwlib.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/ic/adwlib.h b/sys/dev/ic/adwlib.h
index c75230dd4e7..7ea21413325 100644
--- a/sys/dev/ic/adwlib.h
+++ b/sys/dev/ic/adwlib.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: adwlib.h,v 1.5 2000/07/22 15:10:13 krw Exp $ */
+/* $OpenBSD: adwlib.h,v 1.6 2000/12/08 00:03:31 krw Exp $ */
/* $NetBSD: adwlib.h,v 1.14 2000/07/03 18:14:18 dante Exp $ */
/*
@@ -821,7 +821,7 @@ typedef struct adw_scsi_req_q {
u_int8_t sg_working_ix; /* ,uCode working SG variable. */
u_int8_t cdb[12]; /* SCSI CDB bytes 0-11. */
u_int32_t sg_real_addr; /* SG list physical address. */
- u_int32_t scsiq_rptr; /* Iternal pointer to ADW_SCSI_REQ_Q */
+ u_int32_t scsiq_rptr; /* Internal pointer to ADW_SCSI_REQ_Q */
u_int8_t cdb16[4]; /* SCSI CDB bytes 12-15. */
u_int32_t ccb_ptr; /* CCB Physical Address */
u_int32_t carr_va; /* Carrier v-address (unused) */
@@ -885,6 +885,7 @@ typedef struct adw_scsi_req_q {
#define SCSI_STATUS_RSERV_CONFLICT 0x18
#define SCSI_STATUS_CMD_TERMINATED 0x22
#define SCSI_STATUS_QUEUE_FULL 0x28
+#define SCSI_STATUS_ACA_ACTIVE 0x30
/*