diff --git a/sys/net/bpf.c b/sys/net/bpf.c
index 1fb84c2..473dbca 100644
--- a/sys/net/bpf.c
+++ b/sys/net/bpf.c
@@ -62,7 +62,6 @@
 #include <sys/vnode.h>
 
 #include <sys/thread2.h>
-#include <sys/mplock2.h>
 
 #include <net/if.h>
 #include <net/bpf.h>
@@ -109,6 +108,8 @@ SYSCTL_INT(_debug, OID_AUTO, bpf_maxbufsize, CTLFLAG_RW,
  */
 static struct bpf_if	*bpf_iflist;
 
+static struct lwkt_token bpf_token = LWKT_TOKEN_INITIALIZER(bpf_token);
+
 static int	bpf_allocbufs(struct bpf_d *);
 static void	bpf_attachd(struct bpf_d *d, struct bpf_if *bp);
 static void	bpf_detachd(struct bpf_d *d);
@@ -519,9 +520,7 @@ bpf_wakeup(struct bpf_d *d)
 	if (d->bd_async && d->bd_sig && d->bd_sigio)
 		pgsigio(d->bd_sigio, d->bd_sig, 0);
 
-	get_mplock();
 	KNOTE(&d->bd_kq.ki_note, 0);
-	rel_mplock();
 }
 
 static void
@@ -1149,11 +1148,11 @@ bpf_tap(struct bpf_if *bp, u_char *pkt, u_int pktlen)
 	int gottime = 0;
 	u_int slen;
 
-	get_mplock();
+	lwkt_gettoken(&bpf_token);
 
 	/* Re-check */
 	if (bp == NULL) {
-		rel_mplock();
+		lwkt_reltoken(&bpf_token);
 		return;
 	}
 
@@ -1174,7 +1173,7 @@ bpf_tap(struct bpf_if *bp, u_char *pkt, u_int pktlen)
 		}
 	}
 
-	rel_mplock();
+	lwkt_reltoken(&bpf_token);
 }
 
 /*
@@ -1214,17 +1213,17 @@ bpf_mtap(struct bpf_if *bp, struct mbuf *m)
 	struct timeval tv;
 	int gottime = 0;
 
-	get_mplock();
+	lwkt_gettoken(&bpf_token);
 
 	/* Re-check */
 	if (bp == NULL) {
-		rel_mplock();
+		lwkt_reltoken(&bpf_token);
 		return;
 	}
 
 	/* Don't compute pktlen, if no descriptor is attached. */
 	if (SLIST_EMPTY(&bp->bif_dlist)) {
-		rel_mplock();
+		lwkt_reltoken(&bpf_token);
 		return;
 	}
 
@@ -1245,7 +1244,7 @@ bpf_mtap(struct bpf_if *bp, struct mbuf *m)
 		}
 	}
 
-	rel_mplock();
+	lwkt_reltoken(&bpf_token);
 }
 
 /*
