mlxsw: spectrum_router: Apply user-defined multipath hash seed
When Spectrum machines compute hash for the purposes of ECMP routing, they use a seed specified through RECR_v2 (Router ECMP Configuration Register). Up until now mlxsw computed the seed by hashing the machine's base MAC. Now that we can optionally have a user-provided seed, use that if possible. Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Reviewed-by: David Ahern <dsahern@kernel.org> Link: https://lore.kernel.org/r/20240607151357.421181-4-petrm@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
4ee2a8cace
commit
60bcfede3f
@ -11450,12 +11450,16 @@ static int mlxsw_sp_mp_hash_init(struct mlxsw_sp *mlxsw_sp)
|
||||
{
|
||||
bool old_inc_parsing_depth, new_inc_parsing_depth;
|
||||
struct mlxsw_sp_mp_hash_config config = {};
|
||||
struct net *net = mlxsw_sp_net(mlxsw_sp);
|
||||
char recr2_pl[MLXSW_REG_RECR2_LEN];
|
||||
unsigned long bit;
|
||||
u32 seed;
|
||||
int err;
|
||||
|
||||
seed = jhash(mlxsw_sp->base_mac, sizeof(mlxsw_sp->base_mac), 0);
|
||||
seed = READ_ONCE(net->ipv4.sysctl_fib_multipath_hash_seed).user_seed;
|
||||
if (!seed)
|
||||
seed = jhash(mlxsw_sp->base_mac, sizeof(mlxsw_sp->base_mac), 0);
|
||||
|
||||
mlxsw_reg_recr2_pack(recr2_pl, seed);
|
||||
mlxsw_sp_mp4_hash_init(mlxsw_sp, &config);
|
||||
mlxsw_sp_mp6_hash_init(mlxsw_sp, &config);
|
||||
|
Loading…
x
Reference in New Issue
Block a user