diff options
author | ru <ru@FreeBSD.org> | 2005-01-10 09:56:47 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2005-01-10 09:56:47 +0000 |
commit | 5556612cc1981ebd07ac334e60c4732d21b9b38b (patch) | |
tree | 10c15588155f6aee661b9865017b383eae984a20 | |
parent | 7b52fab5af4a0c3274078b3c24859026d8d68eaf (diff) | |
download | FreeBSD-src-5556612cc1981ebd07ac334e60c4732d21b9b38b.zip FreeBSD-src-5556612cc1981ebd07ac334e60c4732d21b9b38b.tar.gz |
Reimplement the fix in rev. 1.126.
OK'ed by: phk
-rw-r--r-- | sys/pci/if_sis.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/pci/if_sis.c b/sys/pci/if_sis.c index 071db9e..4c1609c 100644 --- a/sys/pci/if_sis.c +++ b/sys/pci/if_sis.c @@ -1641,12 +1641,12 @@ sis_intr(void *arg) SIS_LOCK(sc); #ifdef DEVICE_POLLING - if ((ifp->if_flags & IFF_POLLING) || - ((ifp->if_capenable & IFCAP_POLLING) && - ether_poll_register(sis_poll, ifp))) { /* ok, disable interrupts */ + if (ifp->if_flags & IFF_POLLING) + goto done; + if ((ifp->if_capenable & IFCAP_POLLING) && + ether_poll_register(sis_poll, ifp)) { /* ok, disable interrupts */ CSR_WRITE_4(sc, SIS_IER, 0); - SIS_UNLOCK(sc); - return; + goto done; } #endif /* DEVICE_POLLING */ @@ -1687,6 +1687,9 @@ sis_intr(void *arg) if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) sis_startl(ifp); +#ifdef DEVICE_POLLING +done: +#endif /* DEVICE_POLLING */ SIS_UNLOCK(sc); } |