summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/net/if_llatbl.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/net/if_llatbl.c')
-rw-r--r--freebsd/sys/net/if_llatbl.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/freebsd/sys/net/if_llatbl.c b/freebsd/sys/net/if_llatbl.c
index b220d7aa..e79b9ba9 100644
--- a/freebsd/sys/net/if_llatbl.c
+++ b/freebsd/sys/net/if_llatbl.c
@@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/eventhandler.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
#include <sys/syslog.h>
@@ -92,6 +93,7 @@ static int htable_foreach_lle(struct lltable *llt, llt_foreach_cb_t *f,
static int
lltable_dump_af(struct lltable *llt, struct sysctl_req *wr)
{
+ struct epoch_tracker et;
int error;
LLTABLE_LIST_LOCK_ASSERT();
@@ -100,10 +102,10 @@ lltable_dump_af(struct lltable *llt, struct sysctl_req *wr)
return (0);
error = 0;
- IF_AFDATA_RLOCK(llt->llt_ifp);
+ NET_EPOCH_ENTER(et);
error = lltable_foreach_lle(llt,
(llt_foreach_cb_t *)llt->llt_dump_entry, wr);
- IF_AFDATA_RUNLOCK(llt->llt_ifp);
+ NET_EPOCH_EXIT(et);
return (error);
}
@@ -455,11 +457,12 @@ struct llentry *
llentry_alloc(struct ifnet *ifp, struct lltable *lt,
struct sockaddr_storage *dst)
{
+ struct epoch_tracker et;
struct llentry *la, *la_tmp;
- IF_AFDATA_RLOCK(ifp);
+ NET_EPOCH_ENTER(et);
la = lla_lookup(lt, LLE_EXCLUSIVE, (struct sockaddr *)dst);
- IF_AFDATA_RUNLOCK(ifp);
+ NET_EPOCH_EXIT(et);
if (la != NULL) {
LLE_ADDREF(la);