netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next] net: Optimize IPv6 path in ip_neigh_for_gw()
@ 2024-10-04 16:27 Breno Leitao
  2024-10-04 17:01 ` David Ahern
  0 siblings, 1 reply; 7+ messages in thread
From: Breno Leitao @ 2024-10-04 16:27 UTC (permalink / raw)
  To: David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni
  Cc: rmikey, kernel-team, horms, open list:NETWORKING [IPv4/IPv6],
	open list

Branch annotation traces from approximately 200 IPv6-enabled hosts
revealed that the 'likely' branch in ip_neigh_for_gw() was consistently
mispredicted. Given the increasing prevalence of IPv6 in modern networks,
this commit adjusts the function to favor the IPv6 path.

Swap the order of the conditional statements and move the 'likely'
annotation to the IPv6 case. This change aims to improve performance in
IPv6-dominant environments by reducing branch mispredictions.

This optimization aligns with the trend of IPv6 becoming the default IP
version in many deployments, and should benefit modern network
configurations.

Signed-off-by: Breno Leitao <leitao@debian.org>
---
 include/net/route.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/net/route.h b/include/net/route.h
index 1789f1e6640b..b90b7b1effb8 100644
--- a/include/net/route.h
+++ b/include/net/route.h
@@ -389,11 +389,11 @@ static inline struct neighbour *ip_neigh_for_gw(struct rtable *rt,
 	struct net_device *dev = rt->dst.dev;
 	struct neighbour *neigh;
 
-	if (likely(rt->rt_gw_family == AF_INET)) {
-		neigh = ip_neigh_gw4(dev, rt->rt_gw4);
-	} else if (rt->rt_gw_family == AF_INET6) {
+	if (likely(rt->rt_gw_family == AF_INET6)) {
 		neigh = ip_neigh_gw6(dev, &rt->rt_gw6);
 		*is_v6gw = true;
+	} else if (rt->rt_gw_family == AF_INET) {
+		neigh = ip_neigh_gw4(dev, rt->rt_gw4);
 	} else {
 		neigh = ip_neigh_gw4(dev, ip_hdr(skb)->daddr);
 	}
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-10-08 14:49 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-04 16:27 [PATCH net-next] net: Optimize IPv6 path in ip_neigh_for_gw() Breno Leitao
2024-10-04 17:01 ` David Ahern
2024-10-04 17:37   ` Breno Leitao
2024-10-08 10:51     ` Paolo Abeni
2024-10-08 14:07       ` Breno Leitao
2024-10-08 14:15         ` Eric Dumazet
2024-10-08 14:48           ` Breno Leitao

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).