Skip to contentSkip to conversation

Decrease number of pointer derefs in nf_conntrack_core.c

PATCH In review Jesper Juhl 5 participants 8 messages Dec 8, 2005 – Dec 12, 2005

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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.

---

 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

net/netfilter/nf_conntrack_core.c +4 -3
@@ -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);
#1 lore raw
Quoted 2 lines · Jesper Juhl

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.

Signature · 5 lines
- 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
#2 lore raw
In reply to Jesper Juhl
Quoted 7 lines · Jesper Juhl

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

#3 lore raw
Quoted 7 lines · Ingo Molnar
Quoted 4 lines · Jesper Juhl

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

Quoted 8 lines
Quoted 3 lines

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

#4 lore raw
Quoted 24 lines · Jesper Juhl
Quoted 7 lines · Ingo Molnar
Quoted 4 lines · Jesper Juhl

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

Quoted 8 lines
Quoted 3 lines

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

Quoted 3 lines

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

Quoted 1 line

gcc --version

gcc (GCC) 4.0.2 20050901 (prerelease) (SUSE Linux)

Tim

#5 lore raw
Quoted 8 lines · Tim Schmielau

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

#6 lore raw
Quoted 8 lines · Ingo Molnar
Quoted 5 lines · Tim Schmielau

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

Quoted 6 lines
Quoted 3 lines

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

#7 lore raw
In reply to Jesper Juhl
Quoted 9 lines · Jesper Juhl

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.