diff options
author | Martin Pieuchot <mpi@cvs.openbsd.org> | 2016-01-08 13:53:25 +0000 |
---|---|---|
committer | Martin Pieuchot <mpi@cvs.openbsd.org> | 2016-01-08 13:53:25 +0000 |
commit | 4a431b682d21d7490cbf8e4698a169488e4661cd (patch) | |
tree | 69f2a8339b679d9b98d3582da1065cf03f2148a3 /sys/net | |
parent | ec93a54243f48ca266a213a866557f62eb190ca8 (diff) |
Get rid of the arp and revarp input queues.
Packets of types ARP and REVARP are now processed in the softnet task,
directly from ether_input() and without holding the KERNEL_LOCK.
Tested by many, ok dlg@
Diffstat (limited to 'sys/net')
-rw-r--r-- | sys/net/if_ethersubr.c | 10 | ||||
-rw-r--r-- | sys/net/netisr.c | 5 | ||||
-rw-r--r-- | sys/net/netisr.h | 4 |
3 files changed, 6 insertions, 13 deletions
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c index 2a441610b01..3ca7f7d1795 100644 --- a/sys/net/if_ethersubr.c +++ b/sys/net/if_ethersubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_ethersubr.c,v 1.231 2015/12/02 08:47:00 claudio Exp $ */ +/* $OpenBSD: if_ethersubr.c,v 1.232 2016/01/08 13:53:24 mpi Exp $ */ /* $NetBSD: if_ethersubr.c,v 1.19 1996/05/07 02:40:30 thorpej Exp $ */ /* @@ -372,14 +372,14 @@ decapsulate: case ETHERTYPE_ARP: if (ifp->if_flags & IFF_NOARP) goto dropanyway; - inq = &arpintrq; - break; + arpinput(m); + return (1); case ETHERTYPE_REVARP: if (ifp->if_flags & IFF_NOARP) goto dropanyway; - inq = &rarpintrq; - break; + revarpinput(m); + return (1); #ifdef INET6 /* diff --git a/sys/net/netisr.c b/sys/net/netisr.c index ecf234174d4..7b6475be1b8 100644 --- a/sys/net/netisr.c +++ b/sys/net/netisr.c @@ -20,7 +20,6 @@ #include <machine/intr.h> -#include "ether.h" #include "ppp.h" #include "bridge.h" #include "pppoe.h" @@ -39,10 +38,6 @@ netintr(void *unused) while ((n = netisr) != 0) { atomic_clearbits_int(&netisr, n); -#if NETHER > 0 - if (n & (1 << NETISR_ARP)) - arpintr(); -#endif if (n & (1 << NETISR_IP)) ipintr(); #ifdef INET6 diff --git a/sys/net/netisr.h b/sys/net/netisr.h index dc8dfed2fbe..482c7c8ce00 100644 --- a/sys/net/netisr.h +++ b/sys/net/netisr.h @@ -1,4 +1,4 @@ -/* $OpenBSD: netisr.h,v 1.43 2015/12/03 12:27:33 dlg Exp $ */ +/* $OpenBSD: netisr.h,v 1.44 2016/01/08 13:53:24 mpi Exp $ */ /* $NetBSD: netisr.h,v 1.12 1995/08/12 23:59:24 mycroft Exp $ */ /* @@ -53,7 +53,6 @@ #define NETISR_IP 2 /* same as AF_INET */ #define NETISR_TX 3 /* for if_snd processing */ #define NETISR_PFSYNC 5 /* for pfsync "immediate" tx */ -#define NETISR_ARP 18 /* same as AF_LINK */ #define NETISR_IPV6 24 /* same as AF_INET6 */ #define NETISR_ISDN 26 /* same as AF_E164 */ #define NETISR_PPP 28 /* for PPP processing */ @@ -64,7 +63,6 @@ #ifdef _KERNEL extern int netisr; /* scheduling bits for network */ -void arpintr(void); void ipintr(void); void ip6intr(void); void pppintr(void); |