Here's the patch that lead up to the first patch (the renaming of
death_by_timeout and exporting it).

This patch adds a check to ip_ct_refresh() so it doesn't update the
timer of a connection unless it's been >HZ ticks since the last update.
both del_timer() and add_timer() disables interrupts while
removing/inserting the timer, no reason to do this for each packet.

-- 
/Martin

Never argue with an idiot. They drag you down to their level, then beat
you with experience.
--- linux-2.4.19-pre9/net/ipv4/netfilter/ip_conntrack_core.c.orig       Mon Jun  3 
20:32:28 2002
+++ linux-2.4.19-pre9/net/ipv4/netfilter/ip_conntrack_core.c    Mon Jun  3 20:48:13 
+2002
@@ -1091,8 +1091,10 @@
        if (!is_confirmed(ct))
                ct->timeout.expires = extra_jiffies;
        else {
-               /* Need del_timer for race avoidance (may already be dying). */
-               if (del_timer(&ct->timeout)) {
+               /* Don't update timer for each packet, only if it's been >HZ
+                * ticks since last update.
+                * Need del_timer for race avoidance (may already be dying). */
+               if (time_after(jiffies, ct->timeout.expires - extra_jiffies + HZ) && 
+del_timer(&ct->timeout)) {
                        ct->timeout.expires = jiffies + extra_jiffies;
                        add_timer(&ct->timeout);
                }

Reply via email to