From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Ahern Subject: Re: [PATCH 03/11] net: fib_multipath_hash() - use new style struct initializer instead of memset Date: Fri, 28 Sep 2018 11:47:48 -0600 Message-ID: <9aecd068-1fe4-7d83-6fc5-87ec90d69c13@gmail.com> References: <20180927230017.15398-1-zenczykowski@gmail.com> <20180927230017.15398-3-zenczykowski@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: netdev@vger.kernel.org To: =?UTF-8?Q?Maciej_=c5=bbenczykowski?= , =?UTF-8?Q?Maciej_=c5=bbenczykowski?= , "David S . Miller" Return-path: Received: from mail-pg1-f195.google.com ([209.85.215.195]:42212 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726238AbeI2AMn (ORCPT ); Fri, 28 Sep 2018 20:12:43 -0400 Received: by mail-pg1-f195.google.com with SMTP id i4-v6so4367378pgq.9 for ; Fri, 28 Sep 2018 10:47:52 -0700 (PDT) In-Reply-To: <20180927230017.15398-3-zenczykowski@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 9/27/18 5:00 PM, Maciej Żenczykowski wrote: > From: Maciej Żenczykowski > > Signed-off-by: Maciej Żenczykowski > --- > net/ipv4/route.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/net/ipv4/route.c b/net/ipv4/route.c > index 048919713f4e..17953a52fbd0 100644 > --- a/net/ipv4/route.c > +++ b/net/ipv4/route.c > @@ -1821,12 +1821,11 @@ static void ip_multipath_l3_keys(const struct sk_buff *skb, > int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4, > const struct sk_buff *skb, struct flow_keys *flkeys) > { > - struct flow_keys hash_keys; > + struct flow_keys hash_keys = {}; > u32 mhash; > > switch (net->ipv4.sysctl_fib_multipath_hash_policy) { > case 0: > - memset(&hash_keys, 0, sizeof(hash_keys)); > hash_keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; > if (skb) { > ip_multipath_l3_keys(skb, &hash_keys); > @@ -1845,8 +1844,6 @@ int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4, > if (skb->l4_hash) > return skb_get_hash_raw(skb) >> 1; > > - memset(&hash_keys, 0, sizeof(hash_keys)); > - > if (!flkeys) { > skb_flow_dissect_flow_keys(skb, &keys, flag); > flkeys = &keys; > @@ -1859,7 +1856,6 @@ int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4, > hash_keys.ports.dst = flkeys->ports.dst; > hash_keys.basic.ip_proto = flkeys->basic.ip_proto; > } else { > - memset(&hash_keys, 0, sizeof(hash_keys)); > hash_keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; > hash_keys.addrs.v4addrs.src = fl4->saddr; > hash_keys.addrs.v4addrs.dst = fl4->daddr; > NACK on this one. This is the hot path and the memset was done right before use for least overhead.