diff options
author | simokawa <simokawa@FreeBSD.org> | 2003-01-21 16:24:35 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2003-01-21 16:24:35 +0000 |
commit | a43a378645017846ed6126b22f426eda0db4e171 (patch) | |
tree | d7fdb3673d18b77c53934bbb7ef2debf31a3d837 /sys | |
parent | d729ef079515306b781d7beb616bd3c45eebeacb (diff) | |
download | FreeBSD-src-a43a378645017846ed6126b22f426eda0db4e171.zip FreeBSD-src-a43a378645017846ed6126b22f426eda0db4e171.tar.gz |
Ignore events of unused IR DMA.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/firewire/fwohci.c | 14 |
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); } } |