summaryrefslogtreecommitdiffstats
path: root/sys/dev/aic7xxx
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1997-04-05 22:03:47 +0000
committergibbs <gibbs@FreeBSD.org>1997-04-05 22:03:47 +0000
commit7e5a647dbaabf9c3714b0e252055c6c024480365 (patch)
treeaa47a38d4eca647d8651bda58ee193fae326fe46 /sys/dev/aic7xxx
parent5c4a66c62ddd4def7a82a7c6200fe6d40747c209 (diff)
downloadFreeBSD-src-7e5a647dbaabf9c3714b0e252055c6c024480365.zip
FreeBSD-src-7e5a647dbaabf9c3714b0e252055c6c024480365.tar.gz
Instead of testing for both SELDI and SELDO in SSTAT0 in the poll for work
loop, test for them separately. The bug report from David Malone showed that even though we had been reselected (SELDI was true), we sat in the poll for work loop until the selection timeout timer expired. It may be that the SSTAT0 register doesn't like to have more than one bit tested at a time. I've seen stranger things than this on these parts.
Diffstat (limited to 'sys/dev/aic7xxx')
-rw-r--r--sys/dev/aic7xxx/aic7xxx.seq10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq
index 184e36e..d7806f9 100644
--- a/sys/dev/aic7xxx/aic7xxx.seq
+++ b/sys/dev/aic7xxx/aic7xxx.seq
@@ -37,7 +37,7 @@
*OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
*SUCH DAMAGE.
*
- * $Id$
+ * $Id: aic7xxx.seq,v 1.68 1997/04/04 19:35:30 gibbs Exp $
*
*-M************************************************************************/
@@ -72,7 +72,8 @@ reset:
mvi SCSISEQ, ENRSELI|ENAUTOATNP;
call clear_target_state;
poll_for_work:
- test SSTAT0,SELDI|SELDO jnz selection;
+ test SSTAT0,SELDO jnz select;
+ test SSTAT0,SELDI jnz reselect;
test SCSISEQ, ENSELO jnz poll_for_work;
.if ( TWIN_CHANNEL )
/*
@@ -82,7 +83,8 @@ poll_for_work:
* either a selection or reselection occurs.
*/
xor SBLKCTL,SELBUSB; /* Toggle to the other bus */
- test SSTAT0,SELDI|SELDO jnz selection;
+ test SSTAT0,SELDO jnz select;
+ test SSTAT0,SELDI jnz reselect;
test SCSISEQ, ENSELO jnz poll_for_work;
xor SBLKCTL,SELBUSB; /* Toggle back */
.endif
@@ -203,8 +205,6 @@ initialize_scsiid:
* Reselection has been initiated by a target. Make a note that we've been
* reselected, but haven't seen an IDENTIFY message from the target yet.
*/
-selection:
- test SSTAT0, SELDI jz select;
reselect:
clr MSG_LEN; /* Don't have anything in the mesg buffer */
mvi CLRSINT0, CLRSELDI;
OpenPOWER on IntegriCloud