summaryrefslogtreecommitdiff
path: root/sys/net
diff options
context:
space:
mode:
authorMartin Pieuchot <mpi@cvs.openbsd.org>2016-01-08 13:53:25 +0000
committerMartin Pieuchot <mpi@cvs.openbsd.org>2016-01-08 13:53:25 +0000
commit4a431b682d21d7490cbf8e4698a169488e4661cd (patch)
tree69f2a8339b679d9b98d3582da1065cf03f2148a3 /sys/net
parentec93a54243f48ca266a213a866557f62eb190ca8 (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.c10
-rw-r--r--sys/net/netisr.c5
-rw-r--r--sys/net/netisr.h4
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);