diff options
author | gibbs <gibbs@FreeBSD.org> | 1997-01-22 18:01:07 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 1997-01-22 18:01:07 +0000 |
commit | e95f937a4f0a430e1fcb6a1249ef89625fb3e095 (patch) | |
tree | cdbb69f18d6b643929c09269eeb9f98c0b3c760d /sys/dev/aic7xxx/aic7xxx_reg.h | |
parent | 3c9f4a1b790a317d3e15afbbc44e3b17affe62e7 (diff) | |
download | FreeBSD-src-e95f937a4f0a430e1fcb6a1249ef89625fb3e095.zip FreeBSD-src-e95f937a4f0a430e1fcb6a1249ef89625fb3e095.tar.gz |
Clear the SCSI channel after we go to busfree instead of after re/selection.
Only enable reselections once the channel and SCSIRATE have been cleared.
Add a pause block around the test busy code in the non-tagged case to simplify
error recovery in the corner case of aborting an SCB that just got started.
Simplify reselection processing by removing the call to initialize_scsiid.
Clear the scsiseq re/select control bits and setup for catching bogus
busfrees earlier in the re/select process.
Improve the automatic PIO code. It turns out that SPIORDY is not a reliable
hardware condition bit, so use REQINIT intstead. Don't rely on PHASEMIS
either since it can take too long to come true. Use a brute force comparison
instead.
Remove some unnecessary overhead in the command complete processing. It
should be nearly impossible to overflow the QOUTFIFO (worst case 9 command
have to complete with at least 6 of them requiring paging on an aic7850),
so don't take the additional PIO hit to guard against this condition. If we
don't see our interrupt in time, the system has bigger problems elsewhere.
If this ever does happen, the timeout handler will notice and retry the
command.
Diffstat (limited to 'sys/dev/aic7xxx/aic7xxx_reg.h')
-rw-r--r-- | sys/dev/aic7xxx/aic7xxx_reg.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx_reg.h b/sys/dev/aic7xxx/aic7xxx_reg.h index c4afb3b..a185792 100644 --- a/sys/dev/aic7xxx/aic7xxx_reg.h +++ b/sys/dev/aic7xxx/aic7xxx_reg.h @@ -320,6 +320,7 @@ #define SINDEX 0x065 #define DINDEX 0x066 +#define ALLONES 0x069 #define ALLZEROS 0x06a #define NONE 0x06a #define SINDIR 0x06c @@ -412,7 +413,6 @@ #define REJECT_MSG 0x61 /* Reject message received */ #define BAD_STATUS 0x71 /* Bad status from target */ #define RESIDUAL 0x81 /* Residual byte count != 0 */ -#define ABORT_TAG 0x91 /* Sent an ABORT_TAG message */ #define AWAITING_MSG 0xa1 /* * Kernel requested to specify * a message to this target @@ -527,6 +527,7 @@ #define MK_MESSAGE 0x80 #define DISCENB 0x40 #define TAG_ENB 0x20 +#define TRACE_SCB 0x10 #define ABORT_SCB 0x08 #define DISCONNECTED 0x04 #define SCB_TAG_TYPE 0x03 |