Revert "net: remove zap_completion_queue"

This reverts commit 15e83ed788.

As explained by Johannes Berg, the optimization made here is
invalid.  Or, at best, incomplete.

Not only destructor invocation, but conntract entry releasing
must be executed outside of hw IRQ context.

So just checking "skb->destructor" is insufficient.

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller
2010-08-03 00:24:04 -07:00
parent a427615e04
commit 3578b0c8ab
2 changed files with 32 additions and 3 deletions

View File

@@ -1591,9 +1591,7 @@ EXPORT_SYMBOL(__netif_schedule);
void dev_kfree_skb_irq(struct sk_buff *skb)
{
if (!skb->destructor)
dev_kfree_skb(skb);
else if (atomic_dec_and_test(&skb->users)) {
if (atomic_dec_and_test(&skb->users)) {
struct softnet_data *sd;
unsigned long flags;