generic-2.6/2.6.30: resync patches for 2.6.30-rc5
[openwrt/openwrt.git] / target / linux / generic-2.6 / patches-2.6.30 / 150-netfilter_imq.patch
index d1248ac1542d90321d12cc3f4aaac4c33948d9e9..8424a7afcaa0f96033237d24d9db09d4b132bfce 100644 (file)
 +
 --- a/drivers/net/Kconfig
 +++ b/drivers/net/Kconfig
-@@ -119,6 +119,129 @@
+@@ -119,6 +119,129 @@ config EQUALIZER
          To compile this driver as a module, choose M here: the module
          will be called eql.  If unsure, say N.
  
        select CRC32
 --- a/drivers/net/Makefile
 +++ b/drivers/net/Makefile
-@@ -152,6 +152,7 @@
+@@ -152,6 +152,7 @@ obj-$(CONFIG_SLHC) += slhc.o
  obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o
  
  obj-$(CONFIG_DUMMY) += dummy.o
  
  /* Don't change this without changing skb_csum_unnecessary! */
  #define CHECKSUM_NONE 0
-@@ -333,6 +336,9 @@
+@@ -333,6 +336,9 @@ struct sk_buff {
         * first. This is owned by whoever has the skb queued ATM.
         */
        char                    cb[48];
  
        unsigned int            len,
                                data_len;
-@@ -363,6 +369,9 @@
+@@ -363,6 +369,9 @@ struct sk_buff {
        struct nf_conntrack     *nfct;
        struct sk_buff          *nfct_reasm;
  #endif
  #ifdef CONFIG_BRIDGE_NETFILTER
        struct nf_bridge_info   *nf_bridge;
  #endif
-@@ -383,6 +392,9 @@
+@@ -383,6 +392,9 @@ struct sk_buff {
        __u8                    requeue:1;
  #endif
        /* 0/13/14 bit hole */
  
  #ifdef CONFIG_NET_DMA
        dma_cookie_t            dma_cookie;
-@@ -423,6 +435,12 @@
+@@ -423,6 +435,12 @@ extern void skb_dma_unmap(struct device 
                          enum dma_data_direction dir);
  #endif
  
  extern void kfree_skb(struct sk_buff *skb);
  extern void consume_skb(struct sk_buff *skb);
  extern void          __kfree_skb(struct sk_buff *skb);
-@@ -1931,6 +1949,10 @@
+@@ -1931,6 +1949,10 @@ static inline void __nf_copy(struct sk_b
        dst->nfct_reasm = src->nfct_reasm;
        nf_conntrack_get_reasm(src->nfct_reasm);
  #endif
  #include <linux/proc_fs.h>
  #include <linux/seq_file.h>
  #include <linux/stat.h>
-@@ -1678,7 +1681,11 @@
+@@ -1678,7 +1681,11 @@ int dev_hard_start_xmit(struct sk_buff *
        int rc;
  
        if (likely(!skb->next)) {
                        dev_queue_xmit_nit(skb, dev);
  
                if (netif_needs_gso(dev, skb)) {
-@@ -1748,8 +1755,7 @@
+@@ -1749,8 +1756,7 @@ u16 skb_tx_hash(const struct net_device 
  }
  EXPORT_SYMBOL(skb_tx_hash);
  
  {
        const struct net_device_ops *ops = dev->netdev_ops;
        u16 queue_index = 0;
-@@ -1762,6 +1768,7 @@
+@@ -1763,6 +1769,7 @@ static struct netdev_queue *dev_pick_tx(
        skb_set_queue_mapping(skb, queue_index);
        return netdev_get_tx_queue(dev, queue_index);
  }
   *    dev_queue_xmit - transmit a buffer
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -1102,6 +1102,7 @@
+@@ -1102,6 +1102,7 @@ extern int               dev_alloc_name(struct net_de
  extern int            dev_open(struct net_device *dev);
  extern int            dev_close(struct net_device *dev);
  extern void           dev_disable_lro(struct net_device *dev);
 +
 --- a/include/net/netfilter/nf_queue.h
 +++ b/include/net/netfilter/nf_queue.h
-@@ -13,6 +13,12 @@
+@@ -13,6 +13,12 @@ struct nf_queue_entry {
        struct net_device       *indev;
        struct net_device       *outdev;
        int                     (*okfn)(struct sk_buff *);
  };
  
  #define nf_queue_entry_reroute(x) ((void *)x + sizeof(struct nf_queue_entry))
-@@ -30,5 +36,11 @@
+@@ -30,5 +36,11 @@ extern int nf_unregister_queue_handler(u
                                       const struct nf_queue_handler *qh);
  extern void nf_unregister_queue_handlers(const struct nf_queue_handler *qh);
  extern void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
  
  static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
                                  struct pipe_buffer *buf)
-@@ -90,6 +93,80 @@
+@@ -90,6 +93,80 @@ static int sock_pipe_buf_steal(struct pi
        return 1;
  }
  
  
  /* Pipe buffer operations for a socket. */
  static struct pipe_buf_operations sock_pipe_buf_ops = {
-@@ -389,6 +466,15 @@
+@@ -389,6 +466,15 @@ static void skb_release_head_state(struc
                WARN_ON(in_irq());
                skb->destructor(skb);
        }
  #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
        nf_conntrack_put(skb->nfct);
        nf_conntrack_put_reasm(skb->nfct_reasm);
-@@ -524,6 +610,9 @@
+@@ -524,6 +610,9 @@ static void __copy_skb_header(struct sk_
        new->sp                 = secpath_get(old->sp);
  #endif
        memcpy(new->cb, old->cb, sizeof(old->cb));
        new->csum_start         = old->csum_start;
        new->csum_offset        = old->csum_offset;
        new->local_df           = old->local_df;
-@@ -2766,6 +2855,13 @@
+@@ -2767,6 +2856,13 @@ void __init skb_init(void)
                                                0,
                                                SLAB_HWCACHE_ALIGN|SLAB_PANIC,
                                                NULL);
  /**
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -396,6 +396,18 @@
+@@ -396,6 +396,18 @@ config NETFILTER_XT_TARGET_LED
          For more information on the LEDs available on your system, see
          Documentation/leds-class.txt
  
        default m if NETFILTER_ADVANCED=n
 --- a/net/netfilter/Makefile
 +++ b/net/netfilter/Makefile
-@@ -46,6 +46,7 @@
+@@ -46,6 +46,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CONNMAR
  obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_NFLOG) += xt_NFLOG.o
 --- a/net/netfilter/nf_queue.c
 +++ b/net/netfilter/nf_queue.c
-@@ -20,6 +20,26 @@
+@@ -20,6 +20,26 @@ static const struct nf_queue_handler *qu
  
  static DEFINE_MUTEX(queue_handler_mutex);
  
  /* return EBUSY when somebody else is registered, return EEXIST if the
   * same handler is registered, return 0 in case of success. */
  int nf_register_queue_handler(u_int8_t pf, const struct nf_queue_handler *qh)
-@@ -80,7 +100,7 @@
+@@ -80,7 +100,7 @@ void nf_unregister_queue_handlers(const 
  }
  EXPORT_SYMBOL_GPL(nf_unregister_queue_handlers);
  
  {
        /* Release those devices we held, or Alexey will kill me. */
        if (entry->indev)
-@@ -100,6 +120,7 @@
+@@ -100,6 +120,7 @@ static void nf_queue_entry_release_refs(
        /* Drop reference to owner of hook which queued us. */
        module_put(entry->elem->owner);
  }
  
  /*
   * Any packet that leaves via this function must come back
-@@ -121,12 +142,26 @@
+@@ -121,12 +142,26 @@ static int __nf_queue(struct sk_buff *sk
  #endif
        const struct nf_afinfo *afinfo;
        const struct nf_queue_handler *qh;
                goto err_unlock;
  
        afinfo = nf_get_afinfo(pf);
-@@ -145,6 +180,10 @@
+@@ -145,6 +180,10 @@ static int __nf_queue(struct sk_buff *sk
                .indev  = indev,
                .outdev = outdev,
                .okfn   = okfn,
        };
  
        /* If it's going away, ignore hook. */
-@@ -170,8 +209,19 @@
+@@ -170,8 +209,19 @@ static int __nf_queue(struct sk_buff *sk
        }
  #endif
        afinfo->saveroute(skb, entry);