summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/snc/dp83932.c16
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;
OpenPOWER on IntegriCloud