  	pktlen = m_length(m, NULL);
  
  	gottime = BPF_TSTAMP_NONE;
-@@ -1888,44 +1965,58 @@ bpf_mtap(struct bpf_if *bp, struct mbuf 
+@@ -1888,44 +1962,58 @@ bpf_mtap(struct bpf_if *bp, struct mbuf 
  		bf = bpf_jitter_enable != 0 ? d->bd_bfilter : NULL;
  		/* XXX We cannot handle multiple mbufs. */
  		if (bf != NULL && m->m_next == NULL)

 #endif
 	int caplen, curlen, hdrlen, totlen;
 	int do_wakeup = 0;
@@ -2111,60 +2232,76 @@ catchpacket(struct bpf_d *d, u_char *pkt
 		 * reader should be woken up.
 		 */
 		do_wakeup = 1;

 	pktlen = m_length(m, NULL);
 	/*
 	 * Craft on-stack mbuf suitable for passing to bpf_filter.
@@ -1941,26 +2029,37 @@ bpf_mtap2(struct bpf_if *bp, void *data,
 	BPFIF_LOCK(bp);
 	LIST_FOREACH(d, &bp->bif_dlist, bd_next) {
 		if (BPF_CHECK_DIRECTION(d, m->m_pkthdr.rcvif, bp->bif_ifp))
