patch-pre2.0.13 linux/net/core/dev.c
Next file: linux/net/core/skbuff.c
Previous file: linux/net/Config.in
Back to the patch index
Back to the overall index
- Lines: 32
- Date:
Thu Jun 6 09:54:05 1996
- Orig file:
pre2.0.12/linux/net/core/dev.c
- Orig date:
Sat Jun 1 20:11:36 1996
diff -u --recursive --new-file pre2.0.12/linux/net/core/dev.c linux/net/core/dev.c
@@ -413,14 +413,8 @@
dev_kfree_skb(skb, FREE_WRITE);
return;
}
- cli();
- skb_device_unlock(skb); /* Buffer is on the device queue and can be freed safely */
- __skb_queue_tail(list, skb);
- skb = __skb_dequeue(list);
- skb_device_lock(skb); /* New buffer needs locking down */
- restore_flags(flags);
}
-
+
/* copy outgoing packets to any sniffer packet handlers */
if (dev_nit) {
struct packet_type *ptype;
@@ -441,6 +435,15 @@
ptype->func(skb2, skb->dev, ptype);
}
}
+ }
+
+ if (skb_queue_len(list)) {
+ cli();
+ skb_device_unlock(skb); /* Buffer is on the device queue and can be freed safely */
+ __skb_queue_tail(list, skb);
+ skb = __skb_dequeue(list);
+ skb_device_lock(skb); /* New buffer needs locking down */
+ restore_flags(flags);
}
}
if (dev->hard_start_xmit(skb, dev) == 0) {
FUNET's LINUX-ADM group, [email protected]
TCL-scripts by Sam Shen, [email protected]
with Sam's (original) version of this