Network threading stage 1/3: netisrs are already software interrupts,
[dragonfly.git] / sys / netproto / atm / atm_subr.c
index 6ec68fb..c98aaf5 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/atm_subr.c,v 1.7 2000/02/13 03:31:59 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/atm_subr.c,v 1.4 2003/08/23 10:06:21 rob Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/atm_subr.c,v 1.8 2003/11/08 07:57:52 dillon Exp $
  */
 
 /*
@@ -36,7 +36,6 @@
  */
 
 #include "kern_include.h"
-#include <net/intrq.h>
 
 /*
  * Global variables
@@ -56,7 +55,7 @@ int                   atm_dev_print = 0;
 int                    atm_print_data = 0;
 int                    atm_version = ATM_VERSION;
 struct timeval         atm_debugtime = {0, 0};
-const int              atmintrq_present = 1;
+struct ifqueue         atm_intrq;
 
 struct sp_info atm_attributes_pool = {
        "atm attributes pool",          /* si_name */
@@ -71,6 +70,7 @@ struct sp_info        atm_attributes_pool = {
  */
 static void    atm_compact (struct atm_time *);
 static KTimeout_ret    atm_timexp (void *);
+static void    atm_intr(struct mbuf *);
 
 /*
  * Local variables
@@ -122,7 +122,7 @@ atm_initialize()
        atm_intr_index = register_isr(atm_intr);
 #endif
 #ifdef __FreeBSD__
-       register_netisr(NETISR_ATM, atm_intr);
+       netisr_register(NETISR_ATM, cpu0_portfn, atm_intr);
 #endif
 
        /*
@@ -879,52 +879,38 @@ atm_stack_drain()
  *     none
  *
  */
-void
-atm_intr()
+static void
+atm_intr(struct mbuf *m)
 {
-       KBuffer         *m;
        caddr_t         cp;
        atm_intr_func_t func;
        void            *token;
-       int             s;
-
-       for (; ; ) {
-               /*
-                * Get next buffer from queue
-                */
-               s = splimp();
-               IF_DEQUEUE(&atm_intrq, m);
-               (void) splx(s);
-               if (m == NULL)
-                       break;
 
-               /*
-                * Get function to call and token value
-                */
-               KB_DATASTART(m, cp, caddr_t);
-               func = *(atm_intr_func_t *)cp;
-               cp += sizeof(func);
-               token = *(void **)cp;
-               KB_HEADADJ(m, -(sizeof(func) + sizeof(token)));
-               if (KB_LEN(m) == 0) {
-                       KBuffer         *m1;
-                       KB_UNLINKHEAD(m, m1);
-                       m = m1;
-               }
+       /*
+        * Get function to call and token value
+        */
+       KB_DATASTART(m, cp, caddr_t);
+       func = *(atm_intr_func_t *)cp;
+       cp += sizeof(func);
+       token = *(void **)cp;
+       KB_HEADADJ(m, -(sizeof(func) + sizeof(token)));
+       if (KB_LEN(m) == 0) {
+               KBuffer         *m1;
+               KB_UNLINKHEAD(m, m1);
+               m = m1;
+       }
 
-               /*
-                * Call processing function
-                */
-               (*func)(token, m);
+       /*
+        * Call processing function
+        */
+       (*func)(token, m);
 
-               /*
-                * Drain any deferred calls
-                */
-               STACK_DRAIN();
-       }
+       /*
+        * Drain any deferred calls
+        */
+       STACK_DRAIN();
 }
 
-
 /*
  * Print a pdu buffer chain
  *