netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Duyck <alexander.duyck@gmail.com>
To: David Ahern <dsa@cumulusnetworks.com>, netdev@vger.kernel.org
Subject: Re: [PATCH net-next 0/9] net: Refactor ip_route_input_slow
Date: Tue, 22 Sep 2015 22:51:27 -0700	[thread overview]
Message-ID: <56023DDF.8000707@gmail.com> (raw)
In-Reply-To: <1442962523-3974-1-git-send-email-dsa@cumulusnetworks.com>

On 09/22/2015 03:55 PM, David Ahern wrote:
> ip_route_input_slow is a maze of gotos (9 of them!) making it error
> prone and difficult to read. This patchset refactors it, removing all
> but 2 of the labels. The brd_input label for broadcast path requires
> too many inputs to make a reasonble helper out of it so I left it as is.
>
> None of these patches change functionality, only move code around
> to make ip_route_input_slow more readable.
>
> Size comparison using gcc version 4.7.2 (Debian 4.7.2-5)
>
> With CONFIG_IP_ROUTE_VERBOSE:
>      Before patches:
>      $ size kbuild2/net/ipv4/route.o
>         text	   data	    bss	    dec	    hex	filename
>        20615	   2321	     32	  22968	   59b8	kbuild2/net/ipv4/route.o
>
>      After patches:
>      $ size kbuild/net/ipv4/route.o
>         text	   data	    bss	    dec	    hex	filename
>        20774	   2321	     32	  23127	   5a57	kbuild/net/ipv4/route.o
>
> An increase of 159 bytes with CONFIG_IP_ROUTE_VERBOSE.
>
> Without CONFIG_IP_ROUTE_VERBOSE:
>      Before patches:
>      $ size kbuild2/net/ipv4/route.o
>         text	   data	    bss	    dec	    hex	filename
>        19778	   2321	     32	  22131	   5673	kbuild2/net/ipv4/route.o
>
>      After patches:
>      $ size kbuild/net/ipv4/route.o
>         text	   data	    bss	    dec	    hex	filename
>        19858	   2321	     32	  22211	   56c3	kbuild/net/ipv4/route.o
>
> An increase of 80 bytes without CONFIG_IP_ROUTE_VERBOSE.
>
> David Ahern (9):
>    net: Remove martian_source_keep_err goto label
>    net: Remove e_inval label from ip_route_input_slow
>    net: Remove e_nobufs label from ip_route_input_slow
>    net: Move rth handling from ip_route_input_slow to helper
>    net: Move martian_destination to helper
>    net: Remove martian_source goto
>    net: Remove martian_destination label
>    net: Remove local_input label
>    net: Remove no_route label
>
>   net/ipv4/route.c | 239 ++++++++++++++++++++++++++++++++-----------------------
>   1 file changed, 139 insertions(+), 100 deletions(-)
>

One option you might consider when untangling this is to just return the 
values instead of leaving any labels.  I just did a quick test on my 
system with gcc version 5.1.1 and going through and just replacing all 
of the labels with returns actually resulted in smaller code since the 
compiler was smart enough to just combine the returns anyway.

You may also want to increase the scope of this patch set to include 
__mkroute_input as it ends up being compiled into this function as 
well.  From what I have seen there is a bit of redundancy with some of 
the code from local_input.

- Alex

  parent reply	other threads:[~2015-09-23  5:51 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-22 22:55 [PATCH net-next 0/9] net: Refactor ip_route_input_slow David Ahern
2015-09-22 22:55 ` [PATCH net-next 1/9] net: Remove martian_source_keep_err goto label David Ahern
2015-09-23  1:04   ` Alexander Duyck
2015-09-23  1:39     ` Alexander Duyck
2015-09-22 22:55 ` [PATCH net-next 2/9] net: Remove e_inval label from ip_route_input_slow David Ahern
2015-09-22 22:55 ` [PATCH net-next 3/9] net: Remove e_nobufs " David Ahern
2015-09-23  2:15   ` Eric W. Biederman
2015-09-23  3:04     ` David Ahern
2015-09-24 10:53     ` David Laight
2015-09-22 22:55 ` [PATCH net-next 4/9] net: Move rth handling from ip_route_input_slow to helper David Ahern
2015-09-23  2:33   ` Alexander Duyck
2015-09-23  3:07     ` David Ahern
2015-09-22 22:55 ` [PATCH net-next 5/9] net: Move martian_destination " David Ahern
2015-09-22 22:55 ` [PATCH net-next 6/9] net: Remove martian_source goto David Ahern
2015-09-22 22:55 ` [PATCH net-next 7/9] net: Remove martian_destination label David Ahern
2015-09-22 22:55 ` [PATCH net-next 8/9] net: Remove local_input label David Ahern
2015-09-22 22:55 ` [PATCH net-next 9/9] net: Remove no_route label David Ahern
2015-09-23  5:51 ` Alexander Duyck [this message]
2015-09-23 14:03   ` [PATCH net-next 0/9] net: Refactor ip_route_input_slow David Ahern

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56023DDF.8000707@gmail.com \
    --to=alexander.duyck@gmail.com \
    --cc=dsa@cumulusnetworks.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).