linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Joe Perches <joe@perches.com>
To: David Miller <davem@davemloft.net>, Jianlin.Lv@arm.com
Cc: netdev@vger.kernel.org, kuba@kernel.org, Song.Zhu@arm.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next] net: Remove unnecessary intermediate variables
Date: Sat, 22 Aug 2020 13:39:28 -0700	[thread overview]
Message-ID: <ae154f9a96a710157f9b402ba21c6888c855dd1e.camel@perches.com> (raw)
In-Reply-To: <20200822.123315.787815838209253525.davem@davemloft.net>

On Sat, 2020-08-22 at 12:33 -0700, David Miller wrote:
> From: Jianlin Lv <Jianlin.Lv@arm.com>
> Date: Sat, 22 Aug 2020 10:04:31 +0800
> 
> > It is not necessary to use src/dst as an intermediate variable for
> > assignment operation; Delete src/dst intermediate variables to avoid
> > unnecessary variable declarations.
> > 
> > Signed-off-by: Jianlin Lv <Jianlin.Lv@arm.com>
> 
> It keeps the line lengths within reasonable length, so these local
> variables are fine.
> 
> Also, the appropriate subsystem prefix for this patch should be "vxlan: "
> not "net: " in your Subject line.  If someone is skimming the shortlog
> in 'git' how will they tell where exactly in the networking your change
> is being made?
> 
> Anyways, I'm not applying this, thanks.

It _might_ be slightly faster to use inlines
instead so there's less copy of 16 byte structs
on the ipv6 side.

It's slightly smaller object code.
---
 drivers/net/vxlan.c | 46 ++++++++++++++++++++++++++--------------------
 1 file changed, 26 insertions(+), 20 deletions(-)

diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index b9fefe27e3e8..e0ea246b3678 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -95,7 +95,25 @@ static inline bool vxlan_collect_metadata(struct vxlan_sock *vs)
 	       ip_tunnel_collect_metadata();
 }
 
+static __always_inline
+void vxlan_use_v4_addrs(struct ip_tunnel_info *info,
+			union vxlan_addr *remote_ip,
+			union vxlan_addr *local_ip)
+{
+	info->key.u.ipv4.src = remote_ip->sin.sin_addr.s_addr;
+	info->key.u.ipv4.dst = local_ip->sin.sin_addr.s_addr;
+}
+
 #if IS_ENABLED(CONFIG_IPV6)
+static __always_inline
+void vxlan_use_v6_addrs(struct ip_tunnel_info *info,
+			union vxlan_addr *remote_ip,
+			union vxlan_addr *local_ip)
+{
+	info->key.u.ipv6.src = remote_ip->sin6.sin6_addr;
+	info->key.u.ipv6.dst = local_ip->sin6.sin6_addr;
+}
+
 static inline
 bool vxlan_addr_equal(const union vxlan_addr *a, const union vxlan_addr *b)
 {
@@ -2724,17 +2742,11 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
 		ndst = &rt->dst;
 		err = skb_tunnel_check_pmtu(skb, ndst, VXLAN_HEADROOM,
 					    netif_is_any_bridge_port(dev));
-		if (err < 0) {
+		if (err < 0)
 			goto tx_error;
-		} else if (err) {
-			if (info) {
-				struct in_addr src, dst;
-
-				src = remote_ip.sin.sin_addr;
-				dst = local_ip.sin.sin_addr;
-				info->key.u.ipv4.src = src.s_addr;
-				info->key.u.ipv4.dst = dst.s_addr;
-			}
+		if (err) {	/* newly built encapsulation length */
+			if (info)
+				vxlan_use_v4_addrs(info, &remote_ip, &local_ip);
 			vxlan_encap_bypass(skb, vxlan, vxlan, vni, false);
 			dst_release(ndst);
 			goto out_unlock;
@@ -2780,17 +2792,11 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
 
 		err = skb_tunnel_check_pmtu(skb, ndst, VXLAN6_HEADROOM,
 					    netif_is_any_bridge_port(dev));
-		if (err < 0) {
+		if (err < 0)
 			goto tx_error;
-		} else if (err) {
-			if (info) {
-				struct in6_addr src, dst;
-
-				src = remote_ip.sin6.sin6_addr;
-				dst = local_ip.sin6.sin6_addr;
-				info->key.u.ipv6.src = src;
-				info->key.u.ipv6.dst = dst;
-			}
+		if (err) {	/* newly built encapsulation length */
+			if (info)
+				vxlan_use_v6_addrs(info, &remote_ip, &local_ip);
 
 			vxlan_encap_bypass(skb, vxlan, vxlan, vni, false);
 			dst_release(ndst);



  reply	other threads:[~2020-08-22 20:39 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-22  2:04 [PATCH net-next] net: Remove unnecessary intermediate variables Jianlin Lv
2020-08-22 19:33 ` David Miller
2020-08-22 20:39   ` Joe Perches [this message]
2020-08-22 20:59     ` David Miller
2020-08-22 21:03       ` Joe Perches
2020-08-22 21:07         ` David Miller
2020-08-22 21:20           ` Joe Perches

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=ae154f9a96a710157f9b402ba21c6888c855dd1e.camel@perches.com \
    --to=joe@perches.com \
    --cc=Jianlin.Lv@arm.com \
    --cc=Song.Zhu@arm.com \
    --cc=davem@davemloft.net \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --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).