Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=380517dead6ab86d7249a1723f07f2f1b10af5f6
Commit:     380517dead6ab86d7249a1723f07f2f1b10af5f6
Parent:     ba419aff2cda91680e5d4d3eeff95df49bd2edec
Author:     Patrick McHardy <[EMAIL PROTECTED]>
AuthorDate: Thu Jan 31 04:40:04 2008 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Thu Jan 31 19:27:56 2008 -0800

    [NETFILTER]: nf_conntrack: avoid duplicate protocol comparison in 
nf_ct_tuple_equal()
    
    nf_ct_tuple_src_equal() and nf_ct_tuple_dst_equal() both compare the 
protocol
    numbers. Unfortunately gcc doesn't optimize out the second comparison, so
    remove it and prefix both functions with __ to indicate that they should not
    be used directly.
    
    Saves another 16 byte of text in __nf_conntrack_find() on x86_64:
    
      nf_conntrack_tuple_taken |  -20 # 320 -> 300, size inlines: 181 -> 161
      __nf_conntrack_find      |  -16 # 267 -> 251, size inlines: 127 -> 115
      __nf_conntrack_confirm   |  -40 # 875 -> 835, size inlines: 570 -> 537
     3 functions changed, 76 bytes removed
    
    Signed-off-by: Patrick McHardy <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 include/net/netfilter/nf_conntrack_tuple.h |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/include/net/netfilter/nf_conntrack_tuple.h 
b/include/net/netfilter/nf_conntrack_tuple.h
index 45cb17c..e69ab2e 100644
--- a/include/net/netfilter/nf_conntrack_tuple.h
+++ b/include/net/netfilter/nf_conntrack_tuple.h
@@ -132,34 +132,33 @@ struct nf_conntrack_tuple_hash
 
 #endif /* __KERNEL__ */
 
-static inline int nf_ct_tuple_src_equal(const struct nf_conntrack_tuple *t1,
-                                       const struct nf_conntrack_tuple *t2)
+static inline int __nf_ct_tuple_src_equal(const struct nf_conntrack_tuple *t1,
+                                         const struct nf_conntrack_tuple *t2)
 { 
        return (t1->src.u3.all[0] == t2->src.u3.all[0] &&
                t1->src.u3.all[1] == t2->src.u3.all[1] &&
                t1->src.u3.all[2] == t2->src.u3.all[2] &&
                t1->src.u3.all[3] == t2->src.u3.all[3] &&
                t1->src.u.all == t2->src.u.all &&
-               t1->src.l3num == t2->src.l3num &&
-               t1->dst.protonum == t2->dst.protonum);
+               t1->src.l3num == t2->src.l3num);
 }
 
-static inline int nf_ct_tuple_dst_equal(const struct nf_conntrack_tuple *t1,
-                                       const struct nf_conntrack_tuple *t2)
+static inline int __nf_ct_tuple_dst_equal(const struct nf_conntrack_tuple *t1,
+                                         const struct nf_conntrack_tuple *t2)
 {
        return (t1->dst.u3.all[0] == t2->dst.u3.all[0] &&
                t1->dst.u3.all[1] == t2->dst.u3.all[1] &&
                t1->dst.u3.all[2] == t2->dst.u3.all[2] &&
                t1->dst.u3.all[3] == t2->dst.u3.all[3] &&
                t1->dst.u.all == t2->dst.u.all &&
-               t1->src.l3num == t2->src.l3num &&
                t1->dst.protonum == t2->dst.protonum);
 }
 
 static inline int nf_ct_tuple_equal(const struct nf_conntrack_tuple *t1,
                                    const struct nf_conntrack_tuple *t2)
 {
-       return nf_ct_tuple_src_equal(t1, t2) && nf_ct_tuple_dst_equal(t1, t2);
+       return __nf_ct_tuple_src_equal(t1, t2) &&
+              __nf_ct_tuple_dst_equal(t1, t2);
 }
 
 static inline int nf_ct_tuple_mask_equal(const struct nf_conntrack_tuple_mask 
*m1,
@@ -199,7 +198,7 @@ static inline int nf_ct_tuple_mask_cmp(const struct 
nf_conntrack_tuple *t,
                                       const struct nf_conntrack_tuple_mask 
*mask)
 {
        return nf_ct_tuple_src_mask_cmp(t, tuple, mask) &&
-              nf_ct_tuple_dst_equal(t, tuple);
+              __nf_ct_tuple_dst_equal(t, tuple);
 }
 
 #endif /* _NF_CONNTRACK_TUPLE_H */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to