[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ae154f9a96a710157f9b402ba21c6888c855dd1e.camel@perches.com>
Date: Sat, 22 Aug 2020 13:39:28 -0700
From: Joe Perches <joe@...ches.com>
To: David Miller <davem@...emloft.net>, Jianlin.Lv@....com
Cc: netdev@...r.kernel.org, kuba@...nel.org, Song.Zhu@....com,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH net-next] net: Remove unnecessary intermediate variables
On Sat, 2020-08-22 at 12:33 -0700, David Miller wrote:
> From: Jianlin Lv <Jianlin.Lv@....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@....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);
Powered by blists - more mailing lists