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