aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/netmap
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2020-01-23 01:35:02 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2020-01-23 01:35:02 +0000
commita44700782e0bbc48a63d0c939946173bba8ab791 (patch)
treeece1a9e08c0319304231b5b7771844d885106e6d /sys/dev/netmap
parentad3980121b023587fdb69e4d3334f08f988da5e4 (diff)
Notes
Diffstat (limited to 'sys/dev/netmap')
-rw-r--r--sys/dev/netmap/netmap.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/dev/netmap/netmap.c b/sys/dev/netmap/netmap.c
index 982f76d45faa..4edcc58cbe0b 100644
--- a/sys/dev/netmap/netmap.c
+++ b/sys/dev/netmap/netmap.c
@@ -437,11 +437,13 @@ ports attached to the switch)
#include <sys/socketvar.h> /* struct socket */
#include <sys/malloc.h>
#include <sys/poll.h>
+#include <sys/proc.h>
#include <sys/rwlock.h>
#include <sys/socket.h> /* sockaddrs */
#include <sys/selinfo.h>
#include <sys/sysctl.h>
#include <sys/jail.h>
+#include <sys/epoch.h>
#include <net/vnet.h>
#include <net/if.h>
#include <net/if_var.h>
@@ -1146,9 +1148,11 @@ netmap_dtor(void *data)
static void
netmap_send_up(struct ifnet *dst, struct mbq *q)
{
+ struct epoch_tracker et;
struct mbuf *m;
struct mbuf *head = NULL, *prev = NULL;
+ NET_EPOCH_ENTER(et);
/* Send packets up, outside the lock; head/prev machinery
* is only useful for Windows. */
while ((m = mbq_dequeue(q)) != NULL) {
@@ -1160,6 +1164,7 @@ netmap_send_up(struct ifnet *dst, struct mbq *q)
}
if (head)
nm_os_send_up(dst, NULL, head);
+ NET_EPOCH_EXIT(et);
mbq_fini(q);
}