2005-12-08 22:35:55

by Jesper Juhl

[permalink] [raw]
Subject: [PATCH] Decrease number of pointer derefs in nf_conntrack_core.c

Hi,

Here's a small patch to decrease the number of pointer derefs in
net/netfilter/nf_conntrack_core.c

Benefits of the patch:
- Fewer pointer dereferences should make the code slightly faster.
- Size of generated code is smaller
- improved readability

Please consider applying.


Signed-off-by: Jesper Juhl <[email protected]>
---


net/netfilter/nf_conntrack_core.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)

orig:
text data bss dec hex filename
12636 49 760 13445 3485 net/netfilter/nf_conntrack_core.o

patched:
text data bss dec hex filename
11825 183 632 12640 3160 net/netfilter/nf_conntrack_core.o

--- linux-2.6.15-rc5-git1-orig/net/netfilter/nf_conntrack_core.c 2005-12-04 18:48:58.000000000 +0100
+++ linux-2.6.15-rc5-git1/net/netfilter/nf_conntrack_core.c 2005-12-08 20:13:03.000000000 +0100
@@ -1129,6 +1129,7 @@ static inline int refresh_timer(struct n
int nf_conntrack_expect_related(struct nf_conntrack_expect *expect)
{
struct nf_conntrack_expect *i;
+ struct nf_conn *master = expect->master;
int ret;

DEBUGP("nf_conntrack_expect_related %p\n", related_to);
@@ -1149,9 +1150,9 @@ int nf_conntrack_expect_related(struct n
}
}
/* Will be over limit? */
- if (expect->master->helper->max_expected &&
- expect->master->expecting >= expect->master->helper->max_expected)
- evict_oldest_expect(expect->master);
+ if (master->helper->max_expected &&
+ master->expecting >= master->helper->max_expected)
+ evict_oldest_expect(master);

nf_conntrack_expect_insert(expect);
nf_conntrack_expect_event(IPEXP_NEW, expect);



2005-12-09 04:16:54

by Harald Welte

[permalink] [raw]
Subject: Re: [netfilter-core] [PATCH] Decrease number of pointer derefs in nf_conntrack_core.c

On Thu, Dec 08, 2005 at 11:36:19PM +0100, Jesper Juhl wrote:
> Here's a small patch to decrease the number of pointer derefs in
> net/netfilter/nf_conntrack_core.c

thanks, looks fine.

Patrick: please merge into your queue, too.

--
- Harald Welte <[email protected]> http://netfilter.org/
============================================================================
"Fragmentation is like classful addressing -- an interesting early
architectural error that shows how much experimentation was going
on while IP was being designed." -- Paul Vixie


Attachments:
(No filename) (596.00 B)
(No filename) (189.00 B)
Download all attachments

2005-12-09 10:11:14

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] Decrease number of pointer derefs in nf_conntrack_core.c


* Jesper Juhl <[email protected]> wrote:

> orig:
> text data bss dec hex filename
> 12636 49 760 13445 3485 net/netfilter/nf_conntrack_core.o
>
> patched:
> text data bss dec hex filename
> 11825 183 632 12640 3160 net/netfilter/nf_conntrack_core.o

just a question - are you sure the measurements are accurate in this
case? The patch looks too small to shave more than 800 bytes off .text!
If it's real then something really wrong is going on in gcc-land ...

Ingo

2005-12-09 10:18:38

by Jesper Juhl

[permalink] [raw]
Subject: Re: [PATCH] Decrease number of pointer derefs in nf_conntrack_core.c

On 12/9/05, Ingo Molnar <[email protected]> wrote:
>
> * Jesper Juhl <[email protected]> wrote:
>
> > orig:
> > text data bss dec hex filename
> > 12636 49 760 13445 3485 net/netfilter/nf_conntrack_core.o
> >
> > patched:
> > text data bss dec hex filename
> > 11825 183 632 12640 3160 net/netfilter/nf_conntrack_core.o
>
> just a question - are you sure the measurements are accurate in this
> case? The patch looks too small to shave more than 800 bytes off .text!
> If it's real then something really wrong is going on in gcc-land ...
>
I did all this with an allyesconfig kernel source and then did :
make net/netfilter/nf_conntrack_core.o
size net/netfilter/nf_conntrack_core.o
rm net/netfilter/nf_conntrack_core.o
then applied the patch and redid
make net/netfilter/nf_conntrack_core.o
size net/netfilter/nf_conntrack_core.o

So I believe the numbers should be correct, but I'm not at home atm,
so I can't verify right now. I won't have a chance to look at it until
tomorrow, but then I'll double-check.

--
Jesper Juhl <[email protected]>
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html

2005-12-09 10:36:28

by Tim Schmielau

[permalink] [raw]
Subject: Re: [PATCH] Decrease number of pointer derefs in nf_conntrack_core.c

On Fri, 9 Dec 2005, Jesper Juhl wrote:

> On 12/9/05, Ingo Molnar <[email protected]> wrote:
> >
> > * Jesper Juhl <[email protected]> wrote:
> >
> > > orig:
> > > text data bss dec hex filename
> > > 12636 49 760 13445 3485 net/netfilter/nf_conntrack_core.o
> > >
> > > patched:
> > > text data bss dec hex filename
> > > 11825 183 632 12640 3160 net/netfilter/nf_conntrack_core.o
> >
> > just a question - are you sure the measurements are accurate in this
> > case? The patch looks too small to shave more than 800 bytes off .text!
> > If it's real then something really wrong is going on in gcc-land ...
> >
> I did all this with an allyesconfig kernel source and then did :
> make net/netfilter/nf_conntrack_core.o
> size net/netfilter/nf_conntrack_core.o
> rm net/netfilter/nf_conntrack_core.o
> then applied the patch and redid
> make net/netfilter/nf_conntrack_core.o
> size net/netfilter/nf_conntrack_core.o
>
> So I believe the numbers should be correct, but I'm not at home atm,
> so I can't verify right now. I won't have a chance to look at it until
> tomorrow, but then I'll double-check.


I get
orig:
text data bss dec hex filename
11745 67 728 12540 30fc net/netfilter/nf_conntrack_core.o

patched:
text data bss dec hex filename
11681 67 728 12476 30bc net/netfilter/nf_conntrack_core.o

> gcc --version
gcc (GCC) 4.0.2 20050901 (prerelease) (SUSE Linux)

Tim

2005-12-09 10:56:05

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] Decrease number of pointer derefs in nf_conntrack_core.c


* Tim Schmielau <[email protected]> wrote:

> I get
> orig:
> text data bss dec hex filename
> 11745 67 728 12540 30fc net/netfilter/nf_conntrack_core.o
>
> patched:
> text data bss dec hex filename
> 11681 67 728 12476 30bc net/netfilter/nf_conntrack_core.o

yeah, that's OK and in the expected range.

Ingo

2005-12-11 01:47:52

by Jesper Juhl

[permalink] [raw]
Subject: Re: [PATCH] Decrease number of pointer derefs in nf_conntrack_core.c

On 12/9/05, Ingo Molnar <[email protected]> wrote:
>
> * Tim Schmielau <[email protected]> wrote:
>
> > I get
> > orig:
> > text data bss dec hex filename
> > 11745 67 728 12540 30fc net/netfilter/nf_conntrack_core.o
> >
> > patched:
> > text data bss dec hex filename
> > 11681 67 728 12476 30bc net/netfilter/nf_conntrack_core.o
>
> yeah, that's OK and in the expected range.
>
Ingo, Tim, you are correct. I did screw up the size measurements for
that one patch. Sorry about that.

--
Jesper Juhl <[email protected]>
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html

2005-12-12 07:30:24

by Patrick McHardy

[permalink] [raw]
Subject: Re: [netfilter-core] [PATCH] Decrease number of pointer derefs in nf_conntrack_core.c

Jesper Juhl wrote:
> Here's a small patch to decrease the number of pointer derefs in
> net/netfilter/nf_conntrack_core.c
>
> Benefits of the patch:
> - Fewer pointer dereferences should make the code slightly faster.
> - Size of generated code is smaller
> - improved readability
>
> Please consider applying.

I've added both patches to my 2.6.16 queue, thanks Jesper.