From: David S. Miller Date: Thu, 10 Mar 2011 04:57:50 +0000 (-0800) Subject: ipv4: Optimize flow initialization in fib_validate_source(). X-Git-Tag: v2.6.39-rc1~468^2~112 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=cc7e17ea0427a5df319e43606a3d6c53b13a6e9c;p=~emulex%2Finfiniband.git ipv4: Optimize flow initialization in fib_validate_source(). Like in commit 44713b67db10c774f14280c129b0d5fd13c70cf2 ("ipv4: Optimize flow initialization in output route lookup." we can optimize the on-stack flow setup to only initialize the members which are actually used. Otherwise we bzero the entire structure, then initialize explicitly the first half of it. Signed-off-by: David S. Miller --- diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 1d2233cd99e..fe10bcd0f30 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c @@ -193,19 +193,21 @@ int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif, u32 *itag, u32 mark) { struct in_device *in_dev; - struct flowi fl = { - .fl4_dst = src, - .fl4_src = dst, - .fl4_tos = tos, - .mark = mark, - .iif = oif - }; + struct flowi fl; struct fib_result res; int no_addr, rpf, accept_local; bool dev_match; int ret; struct net *net; + fl.oif = 0; + fl.iif = oif; + fl.mark = mark; + fl.fl4_dst = src; + fl.fl4_src = dst; + fl.fl4_tos = tos; + fl.fl4_scope = RT_SCOPE_UNIVERSE; + no_addr = rpf = accept_local = 0; in_dev = __in_dev_get_rcu(dev); if (in_dev) {