diff options
Diffstat (limited to 'sys/kern/kern_intr.c')
-rw-r--r-- | sys/kern/kern_intr.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index e873c6e..88868dc 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -623,7 +623,16 @@ swi_net(void *dummy) u_int bits; int i; +#ifdef DEVICE_POLLING + for (;;) { + int pollmore; +#endif bits = atomic_readandclear_int(&netisr); +#ifdef DEVICE_POLLING + if (bits == 0) + return; + pollmore = bits & (1 << NETISR_POLL); +#endif while ((i = ffs(bits)) != 0) { i--; if (netisrs[i] != NULL) @@ -632,6 +641,11 @@ swi_net(void *dummy) printf("swi_net: unregistered isr number: %d.\n", i); bits &= ~(1 << i); } +#ifdef DEVICE_POLLING + if (pollmore) + ether_pollmore(); + } +#endif } /* |