convert netisr to real softinterrupt

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Claudio Jeker
Date: Wednesday, November 24, 2010 - 9:06 am

This diff was made by oga@ some time ago -- I just fixed a few conflicts
and I would really like to see this going in.

netisr needs to be made a normal C function and not this madness it
currently is. This is necessary to imporve the packet scheduling.

Tested myself on i386, amd64, sparc64, sparc, alpha and hppa
-- 
:wq Claudio

Index: arch/alpha/alpha/interrupt.c
===================================================================
RCS file: /cvs/src/sys/arch/alpha/alpha/interrupt.c,v
retrieving revision 1.29
diff -u -p -r1.29 interrupt.c
--- arch/alpha/alpha/interrupt.c	19 Apr 2009 19:13:57 -0000	1.29
+++ arch/alpha/alpha/interrupt.c	5 Nov 2010 15:50:38 -0000
@@ -88,26 +88,6 @@
 #include <sys/device.h>
 #endif
 
-#include <net/netisr.h>
-#include <net/if.h>
-
-#ifdef INET
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <netinet/ip_var.h>
-#endif
-
-#ifdef INET6
-#ifndef INET
-#include <netinet/in.h>
-#endif
-#include <netinet/ip6.h>
-#include <netinet6/ip6_var.h>
-#endif
-
-#include "ppp.h"
-#include "bridge.h"
-
 #include "apecs.h"
 #include "cia.h"
 #include "lca.h"
@@ -119,8 +99,6 @@ extern struct evcount clk_count;
 
 struct scbvec scb_iovectab[SCB_VECTOIDX(SCB_SIZE - SCB_IOVECBASE)];
 
-void netintr(void);
-
 void	scb_stray(void *, u_long);
 
 void
@@ -480,33 +458,8 @@ badaddr_read(void *addr, size_t size, vo
 
 #endif	/* NAPECS > 0 || NCIA > 0 || NLCA > 0 || NTCASIC > 0 */
 
-int netisr;
-
-void
-netintr()
-{
-	int n;
-
-	while ((n = netisr) != 0) {
-		atomic_clearbits_int(&netisr, n);
-
-#define	DONETISR(bit, fn)						\
-		do {							\
-			if (n & (1 << (bit)))				\
-				fn();					\
-		} while (0)
-
-#include <net/netisr_dispatch.h>
-
-#undef DONETISR
-	}
-}
-
 struct alpha_soft_intr alpha_soft_intrs[SI_NSOFT];
 
-/* XXX For legacy software interrupts. */
-struct alpha_soft_intrhand *softnet_intrhand;
-
 /*
  * softintr_init:
  *
@@ -524,10 +477,6 @@ softintr_init()
 		mtx_init(&asi->softintr_mtx, IPL_HIGH);
 		asi->softintr_siq = i;
 	}
-
-	/* XXX Establish legacy software interrupt handlers. */
-	softnet_intrhand = softintr_establish(IPL_SOFTNET,
-	    (void (*)(void *))netintr, NULL);
 }
 
 /*
Index: arch/alpha/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/alpha/include/intr.h,v
retrieving revision 1.36
diff -u -p -r1.36 intr.h
--- arch/alpha/include/intr.h	31 May 2010 21:39:55 -0000	1.36
+++ arch/alpha/include/intr.h	5 Nov 2010 15:50:38 -0000
@@ -264,11 +264,6 @@ void	*softintr_establish(int, void (*)(v
 void	 softintr_init(void);
 void	 softintr_schedule(void *);
 
-/* XXX For legacy software interrupts. */
-extern struct alpha_soft_intrhand *softnet_intrhand;
-
-#define	setsoftnet()	softintr_schedule(softnet_intrhand)
-
 struct alpha_shared_intr *alpha_shared_intr_alloc(unsigned int);
 int	alpha_shared_intr_dispatch(struct alpha_shared_intr *,
 	    unsigned int);
Index: arch/amd64/amd64/vector.S
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/vector.S,v
retrieving revision 1.26
diff -u -p -r1.26 vector.S
--- arch/amd64/amd64/vector.S	28 Sep 2010 03:53:14 -0000	1.26
+++ arch/amd64/amd64/vector.S	5 Nov 2010 15:50:38 -0000
@@ -78,8 +78,6 @@
 #include <machine/intr.h>
 #include <machine/psl.h>
 
-#include <net/netisr.h>
-
 #include "ioapic.h"
 #include "lapic.h"
 #include "assym.h"
@@ -801,10 +799,6 @@ _C_LABEL(ioapic_level_stubs):
 /*
  * Soft interrupt handlers
  */
-	.globl	_C_LABEL(netisr)
-_C_LABEL(netisr):
-	.word	0
-
 	.text
 IDTVEC(softtty)
 	movl	$IPL_SOFTTTY, CPUVAR(ILEVEL)
@@ -830,19 +824,6 @@ IDTVEC(softnet)
 	call	_C_LABEL(x86_softintlock)
 #endif
 	movq	CPUVAR(ISOURCES) + SIR_NET * 8, %r12
-
-	xorq	%r12,%r12
-	xchgl	_C_LABEL(netisr),%r12d
-
-	/* XXX Do the legacy netisrs here for now. */
-#define DONETISR(s, c) \
-	.globl  _C_LABEL(c)	;\
-	testl	$(1 << s),%r12d	;\
-	jz	1f		;\
-	call	_C_LABEL(c)	;\
-1:
-#include <net/netisr_dispatch.h>
-	
 	movl	$X86_SOFTINTR_SOFTNET,%edi
 	call	_C_LABEL(softintr_dispatch)
 #ifdef MULTIPROCESSOR	
Index: arch/amd64/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/amd64/include/intr.h,v
retrieving revision 1.19
diff -u -p -r1.19 intr.h
--- arch/amd64/include/intr.h	31 May 2010 21:39:56 -0000	1.19
+++ arch/amd64/include/intr.h	5 Nov 2010 15:50:38 -0000
@@ -172,11 +172,6 @@ void splassert_check(int, const char *);
 #define splsoftassert(wantipl)	do { /* nada */ } while (0)
 #endif
 
-/*
- * XXX
- */
-#define	setsoftnet()	softintr(SIR_NET)
-
 #define IPLSHIFT 4			/* The upper nibble of vectors is the IPL.      */
 #define IPL(level) ((level) >> IPLSHIFT)	/* Extract the IPL.    */
 
Index: arch/arm/arm/softintr.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/arm/softintr.c,v
retrieving revision 1.6
diff -u -p -r1.6 softintr.c
--- arch/arm/arm/softintr.c	19 Apr 2009 18:54:06 -0000	1.6
+++ arch/arm/arm/softintr.c	5 Nov 2010 15:50:38 -0000
@@ -39,9 +39,6 @@
 #include <sys/param.h>
 #include <sys/malloc.h>
 
-/* XXX Network interrupts should be converted to new softintrs. */
-#include <net/netisr.h>
-
 #include <uvm/uvm_extern.h>
 
 #include <machine/atomic.h>
@@ -49,10 +46,6 @@
 
 struct soft_intrq soft_intrq[SI_NQUEUES];
 
-struct soft_intrhand *softnet_intrhand;
-
-void	netintr(void);
-
 /*
  * softintr_init:
  *
@@ -70,12 +63,6 @@ softintr_init(void)
 		mtx_init(&siq->siq_mtx, IPL_HIGH);
 		siq->siq_si = i;
 	}
-
-	/* XXX Establish legacy software interrupt handlers. */
-	softnet_intrhand = softintr_establish(IPL_SOFTNET,
-	    (void (*)(void *))netintr, NULL);
-
-	assert(softnet_intrhand != NULL);
 }
 
 /*
@@ -171,26 +158,4 @@ softintr_disestablish(void *arg)
 	mtx_leave(&siq->siq_mtx);
 
 	free(sih, M_DEVBUF);
-}
-
-int netisr; 
-
-void
-netintr(void)
-{
-	int n;
-
-	while ((n = netisr) != 0) {
-		atomic_clearbits_int(&netisr, n);
-
-#define	DONETISR(bit, fn)						\
-		do {							\
-			if (n & (1 << (bit)))				\
-				fn();					\
-		} while (/*CONSTCOND*/0)
-
-#include <net/netisr_dispatch.h>
-
-#undef DONETISR
-	}
 }
Index: arch/arm/include/softintr.h
===================================================================
RCS file: /cvs/src/sys/arch/arm/include/softintr.h,v
retrieving revision 1.4
diff -u -p -r1.4 softintr.h
--- arch/arm/include/softintr.h	19 Apr 2009 18:54:06 -0000	1.4
+++ arch/arm/include/softintr.h	5 Nov 2010 15:50:38 -0000
@@ -91,11 +91,6 @@ do {									\
 	mtx_leave(&__siq->siq_mtx);					\
 } while (/*CONSTCOND*/0)
 
-/* XXX For legacy software interrupts. */
-extern struct soft_intrhand *softnet_intrhand;
-
-#define	setsoftnet()	softintr_schedule(softnet_intrhand)
-
 #endif /* _KERNEL */
 
 #endif	/* _ARM_SOFTINTR_H_ */
Index: arch/hppa/hppa/intr.c
===================================================================
RCS file: /cvs/src/sys/arch/hppa/hppa/intr.c,v
retrieving revision 1.35
diff -u -p -r1.35 intr.c
--- arch/hppa/hppa/intr.c	20 Sep 2010 06:33:47 -0000	1.35
+++ arch/hppa/hppa/intr.c	5 Nov 2010 15:50:38 -0000
@@ -33,17 +33,12 @@
 #include <sys/evcount.h>
 #include <sys/malloc.h>
 
-#include <net/netisr.h>
-
 #include <uvm/uvm_extern.h>	/* for uvmexp */
 
 #include <machine/autoconf.h>
 #include <machine/frame.h>
 #include <machine/reg.h>
 
-void softnet(void);
-void softtty(void);
-
 struct hppa_iv {
 	char pri;
 	char irq;
@@ -64,7 +59,7 @@ struct hppa_iv intr_store[8*2*CPU_NINTS]
     *intr_more = intr_store, *intr_list;
 struct hppa_iv intr_table[CPU_NINTS] __attribute__ ((aligned(32))) = {
 	{ IPL_SOFTCLOCK, 0, HPPA_IV_SOFT, 0, 0, NULL },
-	{ IPL_SOFTNET  , 0, HPPA_IV_SOFT, 0, 0, (int (*)(void *))&softnet },
+	{ IPL_SOFTNET  , 0, HPPA_IV_SOFT, 0, 0, NULL },
 	{ 0 },
 	{ 0 },
 	{ IPL_SOFTTTY  , 0, HPPA_IV_SOFT, 0, 0, NULL }
@@ -88,18 +83,6 @@ splassert_check(int wantipl, const char 
 		splassert_fail(wantipl, ci->ci_cpl, func);
 }
 #endif
-
-void
-softnet(void)
-{
-	int ni;
-
-	/* use atomic "load & clear" */
-	__asm __volatile(
-	    "ldcws	0(%2), %0": "=&r" (ni), "+m" (netisr): "r" (&netisr));
-#define DONETISR(m,c) if (ni & (1 << (m))) c()
-#include <net/netisr_dispatch.h>
-}
 
 void
 cpu_intr_init(void)
Index: arch/hppa/hppa/locore.S
===================================================================
RCS file: /cvs/src/sys/arch/hppa/hppa/locore.S,v
retrieving revision 1.179
diff -u -p -r1.179 locore.S
--- arch/hppa/hppa/locore.S	18 Aug 2010 21:01:14 -0000	1.179
+++ arch/hppa/hppa/locore.S	5 Nov 2010 15:50:38 -0000
@@ -103,13 +103,6 @@
 
 	.data
 
-	.export netisr, data
-	.align 16
-netisr
-	.word	0
-	.size	netisr, .-netisr
-	.align	16
-
 	BSS(pdc_stack, 4)	/* temp stack for PDC call */
 	BSS(emrg_stack, 4)	/* stack for HPMC/TOC/PWRF */
 
Index: arch/hppa/hppa/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/hppa/hppa/trap.c,v
retrieving revision 1.110
diff -u -p -r1.110 trap.c
--- arch/hppa/hppa/trap.c	1 Jul 2010 05:33:32 -0000	1.110
+++ arch/hppa/hppa/trap.c	5 Nov 2010 15:50:38 -0000
@@ -36,8 +36,6 @@
 #include <sys/signalvar.h>
 #include <sys/user.h>
 
-#include <net/netisr.h>
-
 #include "systrace.h"
 #include <dev/systrace.h>
 
Index: arch/hppa/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/hppa/include/intr.h,v
retrieving revision 1.34
diff -u -p -r1.34 intr.h
--- arch/hppa/include/intr.h	2 Jul 2010 00:00:45 -0000	1.34
+++ arch/hppa/include/intr.h	5 Nov 2010 15:50:38 -0000
@@ -156,7 +156,6 @@ int	 hppa_ipi_send(struct cpu_info *, u_
 #endif
 
 #define	setsoftast(p)	(p->p_md.md_astpending = 1)
-#define	setsoftnet()	softintr(1 << (IPL_SOFTNET - 1))
 
 void	*softintr_establish(int, void (*)(void *), void *);
 void	 softintr_disestablish(void *);
Index: arch/hppa64/hppa64/locore.S
===================================================================
RCS file: /cvs/src/sys/arch/hppa64/hppa64/locore.S,v
retrieving revision 1.10
diff -u -p -r1.10 locore.S
--- arch/hppa64/hppa64/locore.S	18 Aug 2010 21:01:14 -0000	1.10
+++ arch/hppa64/hppa64/locore.S	5 Nov 2010 15:50:38 -0000
@@ -44,10 +44,6 @@
 
 	.data
 
-	.export netisr, data
-	.align	16
-netisr
-	.word	0
 	.align	16
 $kpsl
 	.word	PSL_W | PSL_Q | PSL_P | PSL_C | PSL_D | PSL_S | PSL_O
Index: arch/hppa64/hppa64/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/hppa64/hppa64/trap.c,v
retrieving revision 1.10
diff -u -p -r1.10 trap.c
--- arch/hppa64/hppa64/trap.c	1 Jul 2010 04:33:59 -0000	1.10
+++ arch/hppa64/hppa64/trap.c	5 Nov 2010 15:50:38 -0000
@@ -27,8 +27,6 @@
 #include <sys/signalvar.h>
 #include <sys/user.h>
 
-#include <net/netisr.h>
-
 #include "systrace.h"
 #include <dev/systrace.h>
 
Index: arch/hppa64/include/cpu.h
===================================================================
RCS file: /cvs/src/sys/arch/hppa64/include/cpu.h,v
retrieving revision 1.18
diff -u -p -r1.18 cpu.h
--- arch/hppa64/include/cpu.h	28 Sep 2010 20:27:54 -0000	1.18
+++ arch/hppa64/include/cpu.h	5 Nov 2010 15:50:38 -0000
@@ -110,9 +110,6 @@
 #define	splx(c)		spllower(c)
 
 #define	setsoftast()		(astpending = 1)
-#define	setsoftclock()		/* TODO */
-#define	setsoftnet()		/* TODO */
-#define	setsofttty()		/* TODO */
 
 #ifndef _LOCORE
 #include <sys/time.h>
Index: arch/i386/i386/apicvec.s
===================================================================
RCS file: /cvs/src/sys/arch/i386/i386/apicvec.s,v
retrieving revision 1.21
diff -u -p -r1.21 apicvec.s
--- arch/i386/i386/apicvec.s	11 Jan 2010 23:09:52 -0000	1.21
+++ arch/i386/i386/apicvec.s	5 Nov 2010 15:50:38 -0000
@@ -207,13 +207,6 @@ XINTR(softclock):
 	decl	CPUVAR(IDEPTH)
 	jmp	_C_LABEL(Xdoreti)
 
-#define DONETISR(s, c) \
-	.globl  _C_LABEL(c)	;\
-	testl	$(1 << s),%edi	;\
-	jz	1f		;\
-	call	_C_LABEL(c)	;\
-1:
-
 XINTR(softnet):
 	pushl	$0
 	pushl	$T_ASTFLT
@@ -228,11 +221,6 @@ XINTR(softnet):
 #ifdef MULTIPROCESSOR
 	call	_C_LABEL(i386_softintlock)
 #endif
-	xorl	%edi,%edi
-	xchgl	_C_LABEL(netisr),%edi
-
-#include <net/netisr_dispatch.h>
-
 	pushl	$I386_SOFTINTR_SOFTNET
 	call	_C_LABEL(softintr_dispatch)
 	addl	$4,%esp
Index: arch/i386/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/i386/include/intr.h,v
retrieving revision 1.39
diff -u -p -r1.39 intr.h
--- arch/i386/include/intr.h	13 Aug 2009 13:24:48 -0000	1.39
+++ arch/i386/include/intr.h	5 Nov 2010 15:50:38 -0000
@@ -126,9 +126,6 @@ void splassert_check(int, const char *);
 #define spllock() 	splhigh()
 #define	spl0()		spllower(IPL_NONE)
 
-#define	setsoftnet()	softintr(SIR_NET)
-#define	setsofttty()	softintr(SIR_TTY)
-
 #include <machine/pic.h>
 
 struct cpu_info;
Index: arch/i386/isa/icu.s
===================================================================
RCS file: /cvs/src/sys/arch/i386/isa/icu.s,v
retrieving revision 1.30
diff -u -p -r1.30 icu.s
--- arch/i386/isa/icu.s	9 May 2010 12:03:16 -0000	1.30
+++ arch/i386/isa/icu.s	5 Nov 2010 15:50:38 -0000
@@ -30,14 +30,10 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <net/netisr.h>
-
 	.data
-	.globl	_C_LABEL(imen),_C_LABEL(netisr)
+	.globl	_C_LABEL(imen)
 _C_LABEL(imen):
 	.long	0xffff		# interrupt mask enable (all off)
-_C_LABEL(netisr):
-	.long	0		# scheduling bits for network
 
 	.text
 /*
@@ -136,13 +132,6 @@ IDTVEC(softtty)
 #endif
 	jmp	*%esi
 
-#define DONETISR(s, c) \
-	.globl  _C_LABEL(c)	;\
-	testl	$(1 << s),%edi	;\
-	jz	1f		;\
-	call	_C_LABEL(c)	;\
-1:
-
 IDTVEC(softnet)
 	movl	$IPL_SOFTNET,%eax
 	movl	%eax,CPL
@@ -150,11 +139,6 @@ IDTVEC(softnet)
 #ifdef MULTIPROCESSOR
 	call	_C_LABEL(i386_softintlock)
 #endif
-	xorl	%edi,%edi
-	xchgl	_C_LABEL(netisr),%edi
-
-#include <net/netisr_dispatch.h>
-
 	pushl	$I386_SOFTINTR_SOFTNET
 	call	_C_LABEL(softintr_dispatch)
 	addl	$4,%esp
Index: arch/loongson/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/loongson/include/intr.h,v
retrieving revision 1.2
diff -u -p -r1.2 intr.h
--- arch/loongson/include/intr.h	23 Apr 2010 03:50:22 -0000	1.2
+++ arch/loongson/include/intr.h	5 Nov 2010 15:50:38 -0000
@@ -106,11 +106,6 @@ void	*softintr_establish(int, void (*)(v
 void	 softintr_init(void);
 void	 softintr_schedule(void *);
 
-/* XXX For legacy software interrupts. */
-extern struct soft_intrhand *softnet_intrhand;
-
-#define	setsoftnet()	softintr_schedule(softnet_intrhand)
-
 #define	splsoft()	splraise(IPL_SOFTINT)
 #define splbio()	splraise(IPL_BIO)
 #define splnet()	splraise(IPL_NET)
Index: arch/luna88k/luna88k/isr.c
===================================================================
RCS file: /cvs/src/sys/arch/luna88k/luna88k/isr.c,v
retrieving revision 1.8
diff -u -p -r1.8 isr.c
--- arch/luna88k/luna88k/isr.c	20 Sep 2010 06:33:47 -0000	1.8
+++ arch/luna88k/luna88k/isr.c	5 Nov 2010 15:50:38 -0000
@@ -42,8 +42,6 @@
 
 #include <uvm/uvm_extern.h>
 
-#include <net/netisr.h>
-
 #include <machine/cpu.h>
 
 #include <luna88k/luna88k/isr.h>
Index: arch/m68k/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/m68k/include/intr.h,v
retrieving revision 1.1
diff -u -p -r1.1 intr.h
--- arch/m68k/include/intr.h	15 Mar 2009 20:40:25 -0000	1.1
+++ arch/m68k/include/intr.h	5 Nov 2010 15:50:38 -0000
@@ -101,11 +101,6 @@ void	softintr_schedule(void *);
 
 extern int softpending;
 
-/* XXX For legacy software interrupts. */
-extern struct soft_intrhand *softnet_intrhand;
-
-#define	setsoftnet()	softintr_schedule(softnet_intrhand)
-
 #endif	/* _LOCORE */
 
 #endif /* _KERNEL */
Index: arch/m68k/m68k/softintr.c
===================================================================
RCS file: /cvs/src/sys/arch/m68k/m68k/softintr.c,v
retrieving revision 1.1
diff -u -p -r1.1 softintr.c
--- arch/m68k/m68k/softintr.c	15 Mar 2009 20:40:25 -0000	1.1
+++ arch/m68k/m68k/softintr.c	5 Nov 2010 15:50:38 -0000
@@ -39,9 +39,6 @@
 #include <sys/param.h>
 #include <sys/malloc.h>
 
-/* XXX Network interrupts should be converted to new softintrs. */
-#include <net/netisr.h>
-
 #include <uvm/uvm_extern.h>
 
 #include <machine/atomic.h>
@@ -49,10 +46,6 @@
 
 struct soft_intrq soft_intrq[SI_NQUEUES];
 
-struct soft_intrhand *softnet_intrhand;
-
-void	netintr(void);
-
 /*
  * Initialize the software interrupt system.
  */
@@ -68,10 +61,6 @@ softintr_init(void)
 		siq->siq_si = i;
 		mtx_init(&siq->siq_mtx, IPL_HIGH);
 	}
-
-	/* XXX Establish legacy software interrupt handlers. */
-	softnet_intrhand = softintr_establish(IPL_SOFTNET,
-	    (void (*)(void *))netintr, NULL);
 }
 
 /*
@@ -176,23 +165,4 @@ softintr_schedule(void *arg)
 		atomic_setbits_int(&softpending, 1 << siq->siq_si);
 	}
 	mtx_leave(&siq->siq_mtx);
-}
-
-int netisr; 
-
-void
-netintr(void)
-{
-	int n;
-
-	while ((n = netisr) != 0) {
-		atomic_clearbits_int(&netisr, n);
-#define	DONETISR(bit, fn)						\
-		do {							\
-			if (n & (1 << (bit)))				\
-				fn();					\
-		} while (0)
-#include <net/netisr_dispatch.h>
-#undef DONETISR
-	}
 }
Index: arch/m88k/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/m88k/include/intr.h,v
retrieving revision 1.11
diff -u -p -r1.11 intr.h
--- arch/m88k/include/intr.h	15 Mar 2009 20:39:53 -0000	1.11
+++ arch/m88k/include/intr.h	5 Nov 2010 15:50:38 -0000
@@ -150,11 +150,6 @@ void	 softintr_schedule(void *);
 
 extern int softpending;
 
-/* XXX For legacy software interrupts. */
-extern struct soft_intrhand *softnet_intrhand;
-
-#define	setsoftnet()	softintr_schedule(softnet_intrhand)
-
 #endif	/* _LOCORE */
 
 #endif /* _KERNEL */
Index: arch/m88k/m88k/softintr.c
===================================================================
RCS file: /cvs/src/sys/arch/m88k/m88k/softintr.c,v
retrieving revision 1.1
diff -u -p -r1.1 softintr.c
--- arch/m88k/m88k/softintr.c	15 Mar 2009 20:39:53 -0000	1.1
+++ arch/m88k/m88k/softintr.c	5 Nov 2010 15:50:38 -0000
@@ -39,9 +39,6 @@
 #include <sys/param.h>
 #include <sys/malloc.h>
 
-/* XXX Network interrupts should be converted to new softintrs. */
-#include <net/netisr.h>
-
 #include <uvm/uvm_extern.h>
 
 #include <machine/atomic.h>
@@ -49,10 +46,6 @@
 
 struct soft_intrq soft_intrq[SI_NQUEUES];
 
-struct soft_intrhand *softnet_intrhand;
-
-void	netintr(void);
-
 /*
  * Initialize the software interrupt system.
  */
@@ -68,10 +61,6 @@ softintr_init(void)
 		siq->siq_si = i;
 		mtx_init(&siq->siq_mtx, IPL_HIGH);
 	}
-
-	/* XXX Establish legacy software interrupt handlers. */
-	softnet_intrhand = softintr_establish(IPL_SOFTNET,
-	    (void (*)(void *))netintr, NULL);
 }
 
 /*
@@ -176,22 +165,4 @@ softintr_schedule(void *arg)
 		atomic_setbits_int(&softpending, 1 << siq->siq_si);
 	}
 	mtx_leave(&siq->siq_mtx);
-}
-
-int netisr; 
-
-void
-netintr(void)
-{
-	int n;
-
-	while ((n = atomic_clear_int(&netisr)) != 0) {
-#define	DONETISR(bit, fn)						\
-		do {							\
-			if (n & (1 << (bit)))				\
-				fn();					\
-		} while (0)
-#include <net/netisr_dispatch.h>
-#undef DONETISR
-	}
 }
Index: arch/mips64/mips64/softintr.c
===================================================================
RCS file: /cvs/src/sys/arch/mips64/mips64/softintr.c,v
retrieving revision 1.11
diff -u -p -r1.11 softintr.c
--- arch/mips64/mips64/softintr.c	18 Jan 2010 17:00:28 -0000	1.11
+++ arch/mips64/mips64/softintr.c	5 Nov 2010 15:50:38 -0000
@@ -39,9 +39,6 @@
 #include <sys/param.h>
 #include <sys/malloc.h>
 
-/* XXX Network interrupts should be converted to new softintrs. */
-#include <net/netisr.h>
-
 #include <uvm/uvm_extern.h>
 
 #include <machine/atomic.h>
@@ -49,8 +46,6 @@
 
 struct soft_intrq soft_intrq[SI_NQUEUES];
 
-struct soft_intrhand *softnet_intrhand;
-
 void	netintr(void);
 
 /*
@@ -68,10 +63,6 @@ softintr_init(void)
 		siq->siq_si = i;
 		mtx_init(&siq->siq_mtx, IPL_HIGH);
 	}
-
-	/* XXX Establish legacy software interrupt handlers. */
-	softnet_intrhand = softintr_establish(IPL_SOFTNET,
-	    (void (*)(void *))netintr, NULL);
 }
 
 /*
@@ -178,25 +169,6 @@ softintr_schedule(void *arg)
 		atomic_setbits_int(&ci->ci_softpending, SINTMASK(siq->siq_si));
 	}
 	mtx_leave(&siq->siq_mtx);
-}
-
-int netisr; 
-
-void
-netintr(void)
-{
-	int n;
-
-	while ((n = netisr) != 0) {
-		atomic_clearbits_int(&netisr, n);
-#define	DONETISR(bit, fn)						\
-		do {							\
-			if (n & (1 << (bit)))				\
-				fn();					\
-		} while (0)
-#include <net/netisr_dispatch.h>
-#undef DONETISR
-	}
 }
 
 void
Index: arch/mvmeppc/mvmeppc/machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/mvmeppc/mvmeppc/machdep.c,v
retrieving revision 1.63
diff -u -p -r1.63 machdep.c
--- arch/mvmeppc/mvmeppc/machdep.c	22 Aug 2009 02:54:50 -0000	1.63
+++ arch/mvmeppc/mvmeppc/machdep.c	5 Nov 2010 15:50:53 -0000
@@ -49,8 +49,6 @@
 #include <sys/systm.h>
 #include <sys/user.h>
 
-#include <net/netisr.h>
-
 #include <machine/bat.h>
 #include <machine/bugio.h>
 #include <machine/pmap.h>
@@ -594,22 +592,6 @@ dumpsys()
 
 volatile int cpl, ipending, astpending;
 int imask[IPL_NUM];
-int netisr;
-
-/*
- * Soft networking interrupts.
- */
-void
-softnet(isr)
-	int isr;
-{
-#define	DONETISR(flag, func) \
-	if (isr & (1 << (flag))) \
-		(func)();
-
-#include <net/netisr_dispatch.h>
-#undef	DONETISR
-}
 
 int
 lcsplx(ipl)
Index: arch/powerpc/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/powerpc/include/intr.h,v
retrieving revision 1.44
diff -u -p -r1.44 intr.h
--- arch/powerpc/include/intr.h	23 Apr 2010 03:50:22 -0000	1.44
+++ arch/powerpc/include/intr.h	5 Nov 2010 15:50:53 -0000
@@ -115,11 +115,6 @@ void	*softintr_establish(int, void (*)(v
 void	 softintr_init(void);
 void	 softintr_schedule(void *);
 
-/* XXX For legacy software interrupts. */
-extern struct soft_intrhand *softnet_intrhand;
-
-#define	setsoftnet()	softintr_schedule(softnet_intrhand)
-
 #define	SINT_CLOCK	SINTMASK(SI_SOFTCLOCK)
 #define	SINT_NET	SINTMASK(SI_SOFTNET)
 #define	SINT_TTY	SINTMASK(SI_SOFTTTY)
Index: arch/powerpc/powerpc/softintr.c
===================================================================
RCS file: /cvs/src/sys/arch/powerpc/powerpc/softintr.c,v
retrieving revision 1.2
diff -u -p -r1.2 softintr.c
--- arch/powerpc/powerpc/softintr.c	8 Nov 2009 21:05:18 -0000	1.2
+++ arch/powerpc/powerpc/softintr.c	5 Nov 2010 15:50:53 -0000
@@ -39,9 +39,6 @@
 #include <sys/param.h>
 #include <sys/malloc.h>
 
-/* XXX Network interrupts should be converted to new softintrs. */
-#include <net/netisr.h>
-
 #include <uvm/uvm_extern.h>
 
 #include <machine/atomic.h>
@@ -51,8 +48,6 @@ struct soft_intrq soft_intrq[SI_NQUEUES]
 
 struct soft_intrhand *softnet_intrhand;
 
-void	netintr(void);
-
 /*
  * Initialize the software interrupt system.
  */
@@ -68,10 +63,6 @@ softintr_init(void)
 		siq->siq_si = i;
 		mtx_init(&siq->siq_mtx, IPL_HIGH);
 	}
-
-	/* XXX Establish legacy software interrupt handlers. */
-	softnet_intrhand = softintr_establish(IPL_SOFTNET,
-	    (void (*)(void *))netintr, NULL);
 }
 
 /*
@@ -182,25 +173,6 @@ softintr_schedule(void *arg)
 		atomic_setbits_int(&ci->ci_ipending, SINTMASK(siq->siq_si));
 	}
 	mtx_leave(&siq->siq_mtx);
-}
-
-int netisr; 
-
-void
-netintr(void)
-{
-	int n;
-
-	while ((n = netisr) != 0) {
-		atomic_clearbits_int(&netisr, n);
-#define	DONETISR(bit, fn)						\
-		do {							\
-			if (n & (1 << (bit)))				\
-				fn();					\
-		} while (0)
-#include <net/netisr_dispatch.h>
-#undef DONETISR
-	}
 }
 
 #if 0
Index: arch/sgi/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/sgi/include/intr.h,v
retrieving revision 1.41
diff -u -p -r1.41 intr.h
--- arch/sgi/include/intr.h	18 Jan 2010 16:59:23 -0000	1.41
+++ arch/sgi/include/intr.h	5 Nov 2010 15:50:53 -0000
@@ -107,11 +107,6 @@ void	*softintr_establish(int, void (*)(v
 void	 softintr_init(void);
 void	 softintr_schedule(void *);
 
-/* XXX For legacy software interrupts. */
-extern struct soft_intrhand *softnet_intrhand;
-
-#define	setsoftnet()	softintr_schedule(softnet_intrhand)
-
 #define	splsoft()	splraise(IPL_SOFTINT)
 #define splbio()	splraise(IPL_BIO)
 #define splnet()	splraise(IPL_NET)
Index: arch/sh/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/sh/include/intr.h,v
retrieving revision 1.7
diff -u -p -r1.7 intr.h
--- arch/sh/include/intr.h	19 Apr 2009 18:54:06 -0000	1.7
+++ arch/sh/include/intr.h	5 Nov 2010 15:50:53 -0000
@@ -114,11 +114,6 @@ void	*softintr_establish(int, void (*)(v
 void	 softintr_init(void);
 void	 softintr_schedule(void *);
 
-/* XXX For legacy software interrupts. */
-extern struct sh_soft_intrhand *softnet_intrhand;
-
-#define	setsoftnet()	softintr_schedule(softnet_intrhand)
-
 #endif	/* _KERNEL */
 
 #endif /* !_SH_INTR_H_ */
Index: arch/sh/sh/interrupt.c
===================================================================
RCS file: /cvs/src/sys/arch/sh/sh/interrupt.c,v
retrieving revision 1.11
diff -u -p -r1.11 interrupt.c
--- arch/sh/sh/interrupt.c	20 Sep 2010 06:33:47 -0000	1.11
+++ arch/sh/sh/interrupt.c	5 Nov 2010 15:50:53 -0000
@@ -35,8 +35,6 @@
 
 #include <uvm/uvm_extern.h>	/* uvmexp.intrs */
 
-#include <net/netisr.h>
-
 #include <sh/clock.h>
 #include <sh/trap.h>
 #include <sh/intcreg.h>
@@ -61,8 +59,6 @@ void tmu2_oneshot(void);
 int tmu2_intr(void *);
 void setsoft(int);
 
-int netisr;
-
 /*
  * EVTCODE to intc_intrhand mapper.
  * max #76 is SH4_INTEVT_TMU4 (0xb80)
@@ -75,7 +71,6 @@ struct intc_intrhand __intc_intrhand[_IN
 };
 
 struct sh_soft_intr sh_soft_intrs[_IPL_NSOFT];
-struct sh_soft_intrhand *softnet_intrhand;
 
 /*
  * SH INTC support.
@@ -588,11 +583,6 @@ softintr_init(void)
 		asi->softintr_ipl = IPL_SOFT + i;
 	}
 
-	/* XXX Establish legacy soft interrupt handlers. */
-	softnet_intrhand = softintr_establish(IPL_SOFTNET,
-	    (void (*)(void *))netintr, NULL);
-	KDASSERT(softnet_intrhand != NULL);
-
 	intc_intr_establish(SH_INTEVT_TMU1_TUNI1, IST_LEVEL, IPL_SOFT,
 	    tmu1_intr, NULL, "tmu1");
 	intc_intr_establish(SH_INTEVT_TMU2_TUNI2, IST_LEVEL, IPL_SOFTNET,
@@ -687,29 +677,6 @@ void softintr_schedule(void *arg)
 		setsoft(si->softintr_ipl);
 	}
 	mtx_leave(&si->softintr_lock);
-}
-
-/*
- * Software (low priority) network interrupt. i.e. softnet().
- */
-void
-netintr(void)
-{
-	int n;
-
-	while ((n = netisr) != 0) {
-		atomic_clearbits_int(&netisr, n);
-
-#define	DONETISR(bit, fn)						\
-		do {							\
-			if (n & (1 << bit))				\
-				fn();					\
-		} while (/*CONSTCOND*/0)
-
-#include <net/netisr_dispatch.h>
-
-#undef DONETISR
-	}
 }
 
 /*
Index: arch/sparc/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/sparc/include/intr.h,v
retrieving revision 1.1
diff -u -p -r1.1 intr.h
--- arch/sparc/include/intr.h	10 Apr 2009 20:53:54 -0000	1.1
+++ arch/sparc/include/intr.h	5 Nov 2010 15:50:53 -0000
@@ -94,9 +94,5 @@ void	 softintr_disestablish(void *);
 void	*softintr_establish(int, void (*)(void *), void *);
 void	 softintr_schedule(void *);
 
-/* XXX legacy software interrupts */
-extern void *softnet_ih;
-#define	 setsoftnet()	softintr_schedule(softnet_ih)
-
 #endif /* _KERNEL */
 #endif /* _SPARC_INTR_H_ */
Index: arch/sparc/sparc/intr.c
===================================================================
RCS file: /cvs/src/sys/arch/sparc/sparc/intr.c,v
retrieving revision 1.36
diff -u -p -r1.36 intr.c
--- arch/sparc/sparc/intr.c	28 Sep 2010 18:52:00 -0000	1.36
+++ arch/sparc/sparc/intr.c	5 Nov 2010 15:56:59 -0000
@@ -51,9 +51,6 @@
 
 #include <dev/cons.h>
 
-#include <net/netisr.h>
-#include <net/if.h>
-
 #include <machine/atomic.h>
 #include <machine/cpu.h>
 #include <machine/ctlreg.h>
@@ -62,26 +59,11 @@
 
 #include <sparc/sparc/cpuvar.h>
 
-#ifdef INET
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <netinet/ip_var.h>
-#endif
-
-#ifdef INET6
-# ifndef INET
-#  include <netinet/in.h>
-# endif
-#include <netinet/ip6.h>
-#include <netinet6/ip6_var.h>
-#endif
-
 extern void raise(int, int);
 
 void	ih_insert(struct intrhand **, struct intrhand *);
 void	ih_remove(struct intrhand **, struct intrhand *);
 
-void	softnet(void *);
 void	strayintr(struct clockframe *);
 
 /*
@@ -180,8 +162,6 @@ intr_init()
 	evcount_attach(&level10.ih_count, "clock", &level10.ih_vec);
 	level14.ih_vec = level14.ih_ipl >> 8;
 	evcount_attach(&level14.ih_count, "prof", &level14.ih_vec);
-
-	softnet_ih = softintr_establish(IPL_SOFTNET, softnet, NULL);
 }
 
 /*
@@ -554,29 +534,6 @@ softintr_schedule(void *arg)
 		}
 	}
 	splx(s);
-}
-
-void *softnet_ih;
-int netisr;
-
-void
-softnet(void *arg)
-{
-	int n;
-
-	while ((n = netisr) != 0) {
-		atomic_clearbits_int(&netisr, n);
-
-#define DONETISR(bit, fn)						\
-		do {							\
-			if (n & (1 << bit))				\
-				fn();					\
-		} while (0)
-
-#include <net/netisr_dispatch.h>
-
-#undef DONETISR
-	}
 }
 
 #ifdef DIAGNOSTIC
Index: arch/sparc64/include/cpu.h
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/include/cpu.h,v
retrieving revision 1.73
diff -u -p -r1.73 cpu.h
--- arch/sparc64/include/cpu.h	28 Sep 2010 20:27:55 -0000	1.73
+++ arch/sparc64/include/cpu.h	5 Nov 2010 15:50:53 -0000
@@ -221,8 +221,6 @@ struct clockframe {
 
 extern void (*cpu_start_clock)(void);
 
-void setsoftnet(void);
-
 #define aston(p)	((p)->p_md.md_astpending = 1)
 
 /*
Index: arch/sparc64/sparc64/intr.c
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/sparc64/intr.c,v
retrieving revision 1.38
diff -u -p -r1.38 intr.c
--- arch/sparc64/sparc64/intr.c	27 Sep 2010 17:39:43 -0000	1.38
+++ arch/sparc64/sparc64/intr.c	5 Nov 2010 15:50:53 -0000
@@ -48,8 +48,6 @@
 
 #include <dev/cons.h>
 
-#include <net/netisr.h>
-
 #include <machine/atomic.h>
 #include <machine/cpu.h>
 #include <machine/ctlreg.h>
@@ -69,7 +67,6 @@ struct intrhand *intrlev[MAXINTNUM];
 
 void	strayintr(const struct trapframe64 *, int);
 int	softintr(void *);
-int	softnet(void *);
 int	intr_list_handler(void *);
 void	intr_ack(struct intrhand *);
 
@@ -124,37 +121,6 @@ strayintr(fp, vectored)
  *	Network software interrupt
  *	Soft clock interrupt
  */
-
-int netisr;
-
-int
-softnet(fp)
-	void *fp;
-{
-	int n;
-	
-	while ((n = netisr) != 0) {
-		atomic_clearbits_int(&netisr, n);
-	
-#define DONETISR(bit, fn)						\
-		do {							\
-			if (n & (1 << bit))				\
-				fn();					\
-		} while (0)
-
-#include <net/netisr_dispatch.h>
-
-#undef DONETISR
-	}
-	return (1);
-}
-
-struct intrhand soft01net = { softnet, NULL, 1 };
-
-void 
-setsoftnet() {
-	send_softint(-1, IPL_SOFTNET, &soft01net);
-}
 
 /*
  * PCI devices can share interrupts so we need to have
Index: arch/vax/include/intr.h
===================================================================
RCS file: /cvs/src/sys/arch/vax/include/intr.h,v
retrieving revision 1.12
diff -u -p -r1.12 intr.h
--- arch/vax/include/intr.h	23 Apr 2010 03:50:22 -0000	1.12
+++ arch/vax/include/intr.h	5 Nov 2010 15:50:53 -0000
@@ -155,11 +155,6 @@ void	*softintr_establish(int, void (*)(v
 void	 softintr_init(void);
 void	 softintr_schedule(void *);
 
-/* XXX For legacy software interrupts. */
-extern struct soft_intrhand *softnet_intrhand;
-
-#define	setsoftnet()	softintr_schedule(softnet_intrhand)
-
 #endif	/* _LOCORE */
 
 #endif	/* _VAX_INTR_H */
Index: arch/vax/vax/locore.S
===================================================================
RCS file: /cvs/src/sys/arch/vax/vax/locore.S,v
retrieving revision 1.3
diff -u -p -r1.3 locore.S
--- arch/vax/vax/locore.S	29 Jun 2010 18:46:34 -0000	1.3
+++ arch/vax/vax/locore.S	5 Nov 2010 15:50:53 -0000
@@ -35,7 +35,6 @@
 #include "assym.h"
 
 #include <machine/asm.h>
-#include <net/netisr.h>
 
 #define JSBENTRY(x) \
 	.text;	_ALIGN_TEXT;	.globl x;	x:
@@ -278,11 +277,6 @@ JSBENTRY(sbiflt)
 TRAPCALL(astintr, T_ASTFLT)
 
 FASTINTR(softintr,softintr_dispatch)
-
-	.data
-	.global _netisr
-_netisr:
-	.long	0	# scheduling bits for network
 
 TRAPCALL(ddbtrap, T_KDBTRAP)
 
Index: arch/vax/vax/machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/vax/vax/machdep.c,v
retrieving revision 1.110
diff -u -p -r1.110 machdep.c
--- arch/vax/vax/machdep.c	29 Jun 2010 18:46:34 -0000	1.110
+++ arch/vax/vax/machdep.c	5 Nov 2010 15:50:53 -0000
@@ -76,7 +76,6 @@
 
 #include <uvm/uvm.h>
 
-#include <net/netisr.h>
 #include <net/if.h>
 
 #ifdef INET
Index: arch/vax/vax/softintr.c
===================================================================
RCS file: /cvs/src/sys/arch/vax/vax/softintr.c,v
retrieving revision 1.1
diff -u -p -r1.1 softintr.c
--- arch/vax/vax/softintr.c	20 Mar 2009 18:39:30 -0000	1.1
+++ arch/vax/vax/softintr.c	5 Nov 2010 15:50:53 -0000
@@ -39,9 +39,6 @@
 #include <sys/param.h>
 #include <sys/malloc.h>
 
-/* XXX Network interrupts should be converted to new softintrs. */
-#include <net/netisr.h>
-
 #include <uvm/uvm_extern.h>
 
 #include <machine/atomic.h>
@@ -170,23 +167,4 @@ softintr_schedule(void *arg)
 		mtpr(siq->siq_si, PR_SIRR);
 	}
 	mtx_leave(&siq->siq_mtx);
-}
-
-int netisr; 
-
-void
-netintr(void)
-{
-	int n;
-
-	while ((n = netisr) != 0) {
-		atomic_clearbits_int(&netisr, n);
-#define	DONETISR(bit, fn)						\
-		do {							\
-			if (n & (1 << (bit)))				\
-				fn();					\
-		} while (0)
-#include <net/netisr_dispatch.h>
-#undef DONETISR
-	}
 }
Index: conf/files
===================================================================
RCS file: /cvs/src/sys/conf/files,v
retrieving revision 1.504
diff -u -p -r1.504 files
--- conf/files	6 Oct 2010 22:19:20 -0000	1.504
+++ conf/files	5 Nov 2010 15:50:53 -0000
@@ -807,6 +807,7 @@ file net/if_loop.c			loop
 file net/if_media.c			ifmedia
 file net/if_sl.c			sl			needs-count
 file net/if_ppp.c			ppp			needs-count
+file net/netisr.c
 file net/ppp_tty.c			ppp
 file net/bsd-comp.c			ppp_bsdcomp
 file net/ppp-deflate.c			ppp_deflate
Index: kern/init_main.c
===================================================================
RCS file: /cvs/src/sys/kern/init_main.c,v
retrieving revision 1.171
diff -u -p -r1.171 init_main.c
--- kern/init_main.c	8 Sep 2010 14:15:56 -0000	1.171
+++ kern/init_main.c	5 Nov 2010 15:50:53 -0000
@@ -89,6 +89,7 @@
 
 #include <net/if.h>
 #include <net/raw_cb.h>
+#include <net/netisr.h>
 
 #if defined(CRYPTO)
 #include <crypto/cryptodev.h>
@@ -396,6 +397,7 @@ main(void *framep)
 	 * until everything is ready.
 	 */
 	s = splnet();
+	netisr_init();
 	domaininit();
 	if_attachdomain();
 	splx(s);
Index: net/netisr.c
===================================================================
RCS file: net/netisr.c
diff -N net/netisr.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ net/netisr.c	5 Nov 2010 15:50:53 -0000
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2010 Owain G. Ainsworth <oga@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+#include <sys/param.h>
+#include <sys/systm.h>
+
+#include <net/netisr.h>
+
+#include <machine/intr.h>
+
+void	 netintr(void *);
+
+int	 netisr;
+void	*netisr_intr;
+
+void
+netintr(void *unused) /* ARGSUSED */
+{
+	int n;
+	while ((n = netisr) != 0) {
+		atomic_clearbits_int(&netisr, n);
+#define DONETISR(bit, fn)			\
+		do {				\
+			if (n & 1 << (bit))	\
+				fn();		\
+		} while ( /* CONSTCOND */ 0)
+#include <net/netisr_dispatch.h>
+
+#undef DONETISR
+	}
+}
+
+void
+netisr_init(void)
+{
+	netisr_intr = softintr_establish(IPL_SOFTNET, netintr, NULL);
+	if (netisr_intr == NULL)
+		panic("can't establish softnet handler");
+}
Index: net/netisr.h
===================================================================
RCS file: /cvs/src/sys/net/netisr.h,v
retrieving revision 1.34
diff -u -p -r1.34 netisr.h
--- net/netisr.h	16 Feb 2009 00:31:25 -0000	1.34
+++ net/netisr.h	5 Nov 2010 15:50:53 -0000
@@ -41,9 +41,6 @@
  * The software interrupt level for the network is higher than the software
  * level for the clock (so you can enter the network in routines called
  * at timeout time).
- *
- * The routine to request a network software interrupt, setsoftnet(),
- * is defined in the machine-specific include files.
  */
 
 /*
@@ -86,11 +83,16 @@ void	mplsintr(void);
 void	pfsyncintr(void);
 
 #include <machine/atomic.h>
+
+extern void *netisr_intr;
 #define	schednetisr(anisr)						\
 do {									\
 	atomic_setbits_int(&netisr, (1 << (anisr)));			\
-	setsoftnet();							\
-} while (0)
+	softintr_schedule(netisr_intr);							\
+} while (/* CONSTCOND */0)
+
+void	netisr_init(void);
+
 #endif
 #endif
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
convert netisr to real softinterrupt, Claudio Jeker, (Wed Nov 24, 9:06 am)
Re: convert netisr to real softinterrupt, Mike Belopuhov, (Wed Nov 24, 9:42 am)
Re: convert netisr to real softinterrupt, Claudio Jeker, (Thu Nov 25, 3:50 am)
Re: convert netisr to real softinterrupt, Mike Belopuhov, (Thu Nov 25, 4:21 am)
Re: convert netisr to real softinterrupt, Owain Ainsworth, (Thu Nov 25, 5:30 am)
Re: convert netisr to real softinterrupt, Henning Brauer, (Thu Nov 25, 5:41 am)
Re: convert netisr to real softinterrupt, Claudio Jeker, (Thu Nov 25, 9:02 am)
Re: convert netisr to real softinterrupt, Henning Brauer, (Thu Nov 25, 11:12 am)
Re: convert netisr to real softinterrupt, Henning Brauer, (Thu Nov 25, 11:13 am)
Re: convert netisr to real softinterrupt, Mark Kettenis, (Thu Nov 25, 3:23 pm)
Re: convert netisr to real softinterrupt, Owain Ainsworth, (Thu Nov 25, 3:45 pm)
Re: convert netisr to real softinterrupt, Claudio Jeker, (Mon Dec 20, 7:45 am)