]> www.infradead.org Git - users/hch/misc.git/commit
ipv6: Start path selection from the first nexthop
authorIdo Schimmel <idosch@nvidia.com>
Wed, 2 Apr 2025 11:42:23 +0000 (14:42 +0300)
committerJakub Kicinski <kuba@kernel.org>
Fri, 4 Apr 2025 14:30:07 +0000 (07:30 -0700)
commit4d0ab3a6885e3e9040310a8d8f54503366083626
tree6de630380300a9736dee669cfed465bee3bc40d9
parent51de3600093429e3b712e5f091d767babc5dd6df
ipv6: Start path selection from the first nexthop

Cited commit transitioned IPv6 path selection to use hash-threshold
instead of modulo-N. With hash-threshold, each nexthop is assigned a
region boundary in the multipath hash function's output space and a
nexthop is chosen if the calculated hash is smaller than the nexthop's
region boundary.

Hash-threshold does not work correctly if path selection does not start
with the first nexthop. For example, if fib6_select_path() is always
passed the last nexthop in the group, then it will always be chosen
because its region boundary covers the entire hash function's output
space.

Fix this by starting the selection process from the first nexthop and do
not consider nexthops for which rt6_score_route() provided a negative
score.

Fixes: 3d709f69a3e7 ("ipv6: Use hash-threshold instead of modulo-N")
Reported-by: Stanislav Fomichev <stfomichev@gmail.com>
Closes: https://lore.kernel.org/netdev/Z9RIyKZDNoka53EO@mini-arch/
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20250402114224.293392-2-idosch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/route.c