diff options
-rw-r--r-- | sys/dev/snc/dp83932.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/dev/snc/dp83932.c b/sys/dev/snc/dp83932.c index 1ffd4f1..9080699 100644 --- a/sys/dev/snc/dp83932.c +++ b/sys/dev/snc/dp83932.c @@ -346,12 +346,6 @@ outloop: M_ASSERTPKTHDR(m); /* - * If bpf is listening on this interface, let it - * see the packet before we commit it to the wire. - */ - BPF_MTAP(ifp, m); - - /* * If there is nothing in the o/p queue, and there is room in * the Tx ring, then send the packet directly. Otherwise append * it to the o/p queue. @@ -361,6 +355,16 @@ outloop: return; } + /* + * If bpf is listening on this interface, let it see the packet + * before we commit it to the wire, but only if we are really + * committed to send it. + * + * XXX: Locking must protect m against premature m_freem() in + * sonictxint(). + */ + BPF_MTAP(ifp, m); + sc->mtd_prev = sc->mtd_free; sc->mtd_free = mtd_next; |