summaryrefslogtreecommitdiff
path: root/sys/i386/scsi/aic7xxx.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/i386/scsi/aic7xxx.c')
-rw-r--r--sys/i386/scsi/aic7xxx.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/sys/i386/scsi/aic7xxx.c b/sys/i386/scsi/aic7xxx.c
index bb61ea4a9c292..ed0eb8eb675bf 100644
--- a/sys/i386/scsi/aic7xxx.c
+++ b/sys/i386/scsi/aic7xxx.c
@@ -32,7 +32,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aic7xxx.c,v 1.81.2.14 1997/03/01 06:53:35 gibbs Exp $
+ * $Id: aic7xxx.c,v 1.81.2.16 1997/03/24 05:11:03 gibbs Exp $
*/
/*
* TODO:
@@ -812,8 +812,7 @@ ahc_intr(arg)
scb->xs->error);
ahc_run_done_queue(ahc);
}
- if (scb->hscb->status != SCSI_QUEUE_FULL)
- ahc_done(ahc, scb);
+ ahc_done(ahc, scb);
}
ahc_outb(ahc, CLRINT, CLRCMDINT);
int_cleared++;
@@ -1334,13 +1333,8 @@ ahc_handle_seqint(ahc, intstat)
/*
* XXX requeue this unconditionally.
*/
- STAILQ_INSERT_TAIL(&ahc->waiting_scbs, scb,
- links);
- scb->flags |= SCB_WAITINGQ;
- /* Give the command a new lease on life */
- untimeout(ahc_timeout, (caddr_t)scb);
- timeout(ahc_timeout, (caddr_t)scb,
- (scb->xs->timeout * hz) / 1000);
+ scb->xs->retries++;
+ scb->xs->error = XS_BUSY;
break;
}
/* Else treat as if it is a BUSY condition */
@@ -2566,7 +2560,12 @@ ahc_run_waiting_queue(ahc)
{
struct scb *scb;
- pause_sequencer(ahc);
+ /*
+ * On aic78X0 chips, we rely on Auto Access Pause (AAP)
+ * instead of doing an explicit pause/unpause.
+ */
+ if ((ahc->type & AHC_AIC78X0) == 0)
+ pause_sequencer(ahc);
while ((scb = ahc->waiting_scbs.stqh_first) != NULL) {
@@ -2588,7 +2587,8 @@ ahc_run_waiting_queue(ahc)
*/
ahc->curqincnt++;
}
- unpause_sequencer(ahc, /*Unpause always*/FALSE);
+ if ((ahc->type & AHC_AIC78X0) == 0)
+ unpause_sequencer(ahc, /*Unpause always*/FALSE);
}
/*
@@ -3185,7 +3185,7 @@ ahc_find_scb(ahc, scb)
break;
}
ahc_outb(ahc, SCBPTR, saved_scbptr);
- if (curindex > ahc->scb_data->maxhscbs)
+ if (curindex >= ahc->scb_data->maxhscbs)
curindex = SCB_LIST_NULL;
return curindex;