Re: [PATCH net-next] net: Remove likely from l3mdev_master_ifindex_by_index

From: David Ahern
Date: Tue Oct 08 2024 - 14:26:05 EST


On 10/8/24 10:32 AM, Breno Leitao wrote:
> The likely() annotation in l3mdev_master_ifindex_by_index() has been
> found to be incorrect 100% of the time in real-world workloads (e.g.,
> web servers).
>
> Annotated branches shows the following in these servers:
>
> correct incorrect % Function File Line
> 0 169053813 100 l3mdev_master_ifindex_by_index l3mdev.h 81
>
> This is happening because l3mdev_master_ifindex_by_index() is called
> from __inet_check_established(), which calls
> l3mdev_master_ifindex_by_index() passing the socked bounded interface.
>
> l3mdev_master_ifindex_by_index(net, sk->sk_bound_dev_if);
>
> Since most sockets are not going to be bound to a network device,
> the likely() is giving the wrong assumption.
>
> Remove the likely() annotation to ensure more accurate branch
> prediction.
>
> Signed-off-by: Breno Leitao <leitao@xxxxxxxxxx>
> ---
> include/net/l3mdev.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>

Reviewed-by: David Ahern <dsahern@xxxxxxxxxx>