-diff -urN linux-2.6.19.old/net/core/skbuff.c linux-2.6.19.dev/net/core/skbuff.c
---- linux-2.6.19.old/net/core/skbuff.c 2006-11-29 22:57:37.000000000 +0100
-+++ linux-2.6.19.dev/net/core/skbuff.c 2006-12-14 03:13:47.000000000 +0100
-@@ -482,6 +482,10 @@
+Index: linux-2.6.21.5/net/core/dev.c
+===================================================================
+--- linux-2.6.21.5.orig/net/core/dev.c 2007-07-02 08:25:36.606124500 +0200
++++ linux-2.6.21.5/net/core/dev.c 2007-07-02 08:26:04.983898000 +0200
+@@ -94,6 +94,9 @@
+ #include <linux/skbuff.h>
+ #include <net/sock.h>
+ #include <linux/rtnetlink.h>
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++#include <linux/imq.h>
++#endif
+ #include <linux/proc_fs.h>
+ #include <linux/seq_file.h>
+ #include <linux/stat.h>
+@@ -1340,7 +1343,11 @@
+ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
+ {
+ if (likely(!skb->next)) {
+- if (netdev_nit)
++ if (netdev_nit
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++ && !(skb->imq_flags & IMQ_F_ENQUEUE)
++#endif
++ )
+ dev_queue_xmit_nit(skb, dev);
+
+ if (netif_needs_gso(dev, skb)) {
+Index: linux-2.6.21.5/net/core/skbuff.c
+===================================================================
+--- linux-2.6.21.5.orig/net/core/skbuff.c 2007-07-02 08:25:36.618125250 +0200
++++ linux-2.6.21.5/net/core/skbuff.c 2007-07-02 08:26:05.007899500 +0200
+@@ -430,6 +430,10 @@