version 1.30, 1994/04/29 23:15:54 |
version 1.31, 1994/05/05 05:36:23 |
Line 303 int ahb_find __P((struct ahb_softc *)); |
|
Line 303 int ahb_find __P((struct ahb_softc *)); |
|
void ahb_init __P((struct ahb_softc *)); |
void ahb_init __P((struct ahb_softc *)); |
void ahbminphys __P((struct buf *)); |
void ahbminphys __P((struct buf *)); |
int ahb_scsi_cmd __P((struct scsi_xfer *)); |
int ahb_scsi_cmd __P((struct scsi_xfer *)); |
void ahb_timeout __P((caddr_t)); |
void ahb_timeout __P((void *)); |
void ahb_print_ecb __P((struct ecb *)); |
void ahb_print_ecb __P((struct ecb *)); |
void ahb_print_active_ecb __P((struct ahb_softc *)); |
void ahb_print_active_ecb __P((struct ahb_softc *)); |
|
|
|
|
if ((ahb_debug & AHB_SHOWECBS) && ecb) |
if ((ahb_debug & AHB_SHOWECBS) && ecb) |
printf("<int ecb(%x)>", ecb); |
printf("<int ecb(%x)>", ecb); |
#endif /*AHBDEBUG */ |
#endif /*AHBDEBUG */ |
untimeout((timeout_t)ahb_timeout, (caddr_t)ecb); |
untimeout(ahb_timeout, (caddr_t)ecb); |
ahb_done(ahb, ecb, stat != AHB_ECB_OK); |
ahb_done(ahb, ecb, stat != AHB_ECB_OK); |
} |
} |
} while (inb(port + G2STAT) & G2STAT_INT_PEND); |
} while (inb(port + G2STAT) & G2STAT_INT_PEND); |
Line 1028 ahb_scsi_cmd(xs) |
|
Line 1028 ahb_scsi_cmd(xs) |
|
if (!(flags & SCSI_NOMASK)) { |
if (!(flags & SCSI_NOMASK)) { |
s = splbio(); |
s = splbio(); |
ahb_send_immed(ahb, sc_link->target, AHB_TARG_RESET); |
ahb_send_immed(ahb, sc_link->target, AHB_TARG_RESET); |
timeout((timeout_t)ahb_timeout, ecb, |
timeout(ahb_timeout, ecb, |
(xs->timeout * hz) / 1000); |
(xs->timeout * hz) / 1000); |
splx(s); |
splx(s); |
return SUCCESSFULLY_QUEUED; |
return SUCCESSFULLY_QUEUED; |
Line 1165 ahb_scsi_cmd(xs) |
|
Line 1165 ahb_scsi_cmd(xs) |
|
if (!(flags & SCSI_NOMASK)) { |
if (!(flags & SCSI_NOMASK)) { |
s = splbio(); |
s = splbio(); |
ahb_send_mbox(ahb, OP_START_ECB, sc_link->target, ecb); |
ahb_send_mbox(ahb, OP_START_ECB, sc_link->target, ecb); |
timeout((timeout_t)ahb_timeout, ecb, (xs->timeout * hz) / 1000); |
timeout(ahb_timeout, ecb, (xs->timeout * hz) / 1000); |
splx(s); |
splx(s); |
SC_DEBUG(sc_link, SDEV_DB3, ("cmd_sent\n")); |
SC_DEBUG(sc_link, SDEV_DB3, ("cmd_sent\n")); |
return SUCCESSFULLY_QUEUED; |
return SUCCESSFULLY_QUEUED; |
Line 1197 ahb_scsi_cmd(xs) |
|
Line 1197 ahb_scsi_cmd(xs) |
|
|
|
void |
void |
ahb_timeout(arg) |
ahb_timeout(arg) |
caddr_t arg; |
void *arg; |
{ |
{ |
int s = splbio(); |
int s = splbio(); |
struct ecb *ecb = (void *)arg; |
struct ecb *ecb = (struct ecb *)arg; |
struct ahb_softc *ahb = ecb->xs->sc_link->adapter_softc; |
struct ahb_softc *ahb = ecb->xs->sc_link->adapter_softc; |
|
|
sc_print_addr(ecb->xs->sc_link); |
sc_print_addr(ecb->xs->sc_link); |
Line 1235 ahb_timeout(arg) |
|
Line 1235 ahb_timeout(arg) |
|
} else { /* abort the operation that has timed out */ |
} else { /* abort the operation that has timed out */ |
printf("\n"); |
printf("\n"); |
ahb_send_mbox(ahb, OP_ABORT_ECB, ecb->xs->sc_link->target, ecb); |
ahb_send_mbox(ahb, OP_ABORT_ECB, ecb->xs->sc_link->target, ecb); |
timeout((timeout_t)ahb_timeout, ecb, 2 * hz); |
timeout(ahb_timeout, ecb, 2 * hz); |
ecb->flags = ECB_ABORTED; |
ecb->flags = ECB_ABORTED; |
} |
} |
splx(s); |
splx(s); |