Author: nbd
Date: 2014-08-07 21:31:16 +0200 (Thu, 07 Aug 2014)
New Revision: 42049

Modified:
   
branches/barrier_breaker/target/linux/generic/patches-3.10/611-netfilter_match_bypass_default_table.patch
Log:
kernel: improve ipv4 netfilter optimization patch

Signed-off-by: Felix Fietkau <[email protected]>

Backport of r42045

Modified: 
branches/barrier_breaker/target/linux/generic/patches-3.10/611-netfilter_match_bypass_default_table.patch
===================================================================
--- 
branches/barrier_breaker/target/linux/generic/patches-3.10/611-netfilter_match_bypass_default_table.patch
   2014-08-07 19:30:36 UTC (rev 42048)
+++ 
branches/barrier_breaker/target/linux/generic/patches-3.10/611-netfilter_match_bypass_default_table.patch
   2014-08-07 19:31:16 UTC (rev 42049)
@@ -34,33 +34,35 @@
  /* Returns one of the generic firewall policies, like NF_ACCEPT. */
  unsigned int
  ipt_do_table(struct sk_buff *skb,
-@@ -334,6 +361,25 @@ ipt_do_table(struct sk_buff *skb,
-       ip = ip_hdr(skb);
-       indev = in ? in->name : nulldevname;
-       outdev = out ? out->name : nulldevname;
-+
+@@ -331,9 +358,27 @@ ipt_do_table(struct sk_buff *skb,
+       unsigned int addend;
+ 
+       /* Initialization */
 +      IP_NF_ASSERT(table->valid_hooks & (1 << hook));
 +      local_bh_disable();
-+      addend = xt_write_recseq_begin();
 +      private = table->private;
 +      cpu        = smp_processor_id();
 +      table_base = private->entries[cpu];
-+      jumpstack  = (struct ipt_entry **)private->jumpstack[cpu];
-+      stackptr   = per_cpu_ptr(private->stackptr, cpu);
-+      origptr    = *stackptr;
-+
 +      e = get_entry(table_base, private->hook_entry[hook]);
 +      if (ipt_handle_default_rule(e, &verdict)) {
 +              ADD_COUNTER(e->counters, skb->len, 1);
-+              xt_write_recseq_end(addend);
 +              local_bh_enable();
 +              return verdict;
 +      }
 +
+       ip = ip_hdr(skb);
+       indev = in ? in->name : nulldevname;
+       outdev = out ? out->name : nulldevname;
++
++      addend = xt_write_recseq_begin();
++      jumpstack  = (struct ipt_entry **)private->jumpstack[cpu];
++      stackptr   = per_cpu_ptr(private->stackptr, cpu);
++      origptr    = *stackptr;
++
        /* We handle fragments by dealing with the first fragment as
         * if it was a normal packet.  All other fragments are treated
         * normally, except that they will NEVER match rules that ask
-@@ -348,18 +394,6 @@ ipt_do_table(struct sk_buff *skb,
+@@ -348,18 +393,6 @@ ipt_do_table(struct sk_buff *skb,
        acpar.family  = NFPROTO_IPV4;
        acpar.hooknum = hook;
  
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to