Don't bother searching the qinfifo for SCBs to requeue in the BUSY

and QUEUE FULL cases; this is already done for all BAD_STATUS cases.

Make sure to requeue the SCB in the above cases internally in the driver,
the SCSI layer doesn't know how to deal with it properly.
This commit is contained in:
fvdl 2000-05-28 00:19:59 +00:00
parent cb5289547f
commit 3713246e34

View File

@ -1,4 +1,4 @@
/* $NetBSD: aic7xxx.c,v 1.52 2000/05/27 21:58:16 fvdl Exp $ */
/* $NetBSD: aic7xxx.c,v 1.53 2000/05/28 00:19:59 fvdl Exp $ */
/*
* Generic driver for the aic7xxx based adaptec SCSI controllers
@ -1889,11 +1889,11 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat)
printf("queue full\n");
case SCSI_STATUS_BUSY:
/*
* Requeue any transactions that haven't been
* sent yet.
* XXX middle layer doesn't handle XS_BUSY well.
* So, requeue this ourselves internally.
*/
ahc_freeze_devq(ahc, xs->sc_link);
ahc_freeze_ccb(scb);
xs->error = XS_BUSY;
scb->flags |= SCB_REQUEUE;
break;
}
break;