diff options
-rw-r--r-- | sys/dev/ic/aic7xxx_openbsd.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/dev/ic/aic7xxx_openbsd.c b/sys/dev/ic/aic7xxx_openbsd.c index bc7fa6ca4d9..02ecbb2a91e 100644 --- a/sys/dev/ic/aic7xxx_openbsd.c +++ b/sys/dev/ic/aic7xxx_openbsd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: aic7xxx_openbsd.c,v 1.17 2004/01/05 01:09:18 krw Exp $ */ +/* $OpenBSD: aic7xxx_openbsd.c,v 1.18 2004/01/07 17:08:32 krw Exp $ */ /* $NetBSD: aic7xxx_osm.c,v 1.14 2003/11/02 11:07:44 wiz Exp $ */ /* @@ -506,8 +506,12 @@ ahc_execute_scb(void *arg, bus_dma_segment_t *dm_segs, int nsegments) TAILQ_INSERT_TAIL(untagged_q, scb, links.tqe); scb->flags |= SCB_UNTAGGEDQ; if (TAILQ_FIRST(untagged_q) != scb) { - ahc_unlock(ahc, &s); - return (SUCCESSFULLY_QUEUED); + if (xs->flags & SCSI_POLL) + goto poll; + else { + ahc_unlock(ahc, &s); + return (SUCCESSFULLY_QUEUED); + } } } scb->flags |= SCB_ACTIVE; @@ -532,6 +536,7 @@ ahc_execute_scb(void *arg, bus_dma_segment_t *dm_segs, int nsegments) /* * If we can't use interrupts, poll for completion */ +poll: SC_DEBUG(xs->sc_link, SDEV_DB3, ("cmd_poll\n")); target = xs->sc_link->target; |