summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsimokawa <simokawa@FreeBSD.org>2003-01-21 16:24:35 +0000
committersimokawa <simokawa@FreeBSD.org>2003-01-21 16:24:35 +0000
commita43a378645017846ed6126b22f426eda0db4e171 (patch)
treed7fdb3673d18b77c53934bbb7ef2debf31a3d837
parentd729ef079515306b781d7beb616bd3c45eebeacb (diff)
downloadFreeBSD-src-a43a378645017846ed6126b22f426eda0db4e171.zip
FreeBSD-src-a43a378645017846ed6126b22f426eda0db4e171.tar.gz
Ignore events of unused IR DMA.
-rw-r--r--sys/dev/firewire/fwohci.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/dev/firewire/fwohci.c b/sys/dev/firewire/fwohci.c
index b07cf08..110ae6a 100644
--- a/sys/dev/firewire/fwohci.c
+++ b/sys/dev/firewire/fwohci.c
@@ -1752,10 +1752,18 @@ fwohci_intr_body(struct fwohci_softc *sc, u_int32_t stat, int count)
irstat = OREAD(sc, OHCI_IR_STAT);
OWRITE(sc, OHCI_IR_STATCLR, irstat);
for(i = 0; i < fc->nisodma ; i++){
+ struct fwohci_dbch *dbch;
+
if((irstat & (1 << i)) != 0){
- if(sc->ir[i].xferq.flag & FWXFERQ_PACKET){
- fwohci_ircv(sc, &sc->ir[i], count);
- }else{
+ dbch = &sc->ir[i];
+ if ((dbch->xferq.flag & FWXFERQ_OPEN) == 0) {
+ device_printf(sc->fc.dev,
+ "dma(%d) not active\n", i);
+ continue;
+ }
+ if (dbch->xferq.flag & FWXFERQ_PACKET) {
+ fwohci_ircv(sc, dbch, count);
+ } else {
fwohci_rbuf_update(sc, i);
}
}
OpenPOWER on IntegriCloud