diff options
Diffstat (limited to 'sys/net')
-rw-r--r-- | sys/net/netisr.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/net/netisr.c b/sys/net/netisr.c index 34d87270f93..bc0310fb347 100644 --- a/sys/net/netisr.c +++ b/sys/net/netisr.c @@ -35,7 +35,8 @@ void *netisr_intr; void netintr(void *unused) /* ARGSUSED */ { - int n; + int n, t = 0; + while ((n = netisr) != 0) { atomic_clearbits_int(&netisr, n); @@ -71,13 +72,16 @@ netintr(void *unused) /* ARGSUSED */ if (n & (1 << NETISR_BT)) btintr(); #endif + + t |= n; + } + #if NPFSYNC > 0 - if (n & (1 << NETISR_PFSYNC)) - pfsyncintr(); + if (t & (1 << NETISR_PFSYNC)) + pfsyncintr(); #endif - if (n & (1 << NETISR_TX)) - nettxintr(); - } + if (t & (1 << NETISR_TX)) + nettxintr(); } void |