mlxsw: spectrum_router: Replace if statement with a switch statement
The code was written when only two multipath hash policies were present, so the if statement was sufficient. The next patch and future patches are going to add support for more policies, so move to a switch statement. Signed-off-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Petr Machata <petrm@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
eb0e4d59b6
commit
7725c1c8f7
|
@ -9612,41 +9612,48 @@ static void mlxsw_sp_mp_hash_field_set(char *recr2_pl, int field)
|
||||||
static void mlxsw_sp_mp4_hash_init(struct mlxsw_sp *mlxsw_sp, char *recr2_pl)
|
static void mlxsw_sp_mp4_hash_init(struct mlxsw_sp *mlxsw_sp, char *recr2_pl)
|
||||||
{
|
{
|
||||||
struct net *net = mlxsw_sp_net(mlxsw_sp);
|
struct net *net = mlxsw_sp_net(mlxsw_sp);
|
||||||
bool only_l3 = !net->ipv4.sysctl_fib_multipath_hash_policy;
|
|
||||||
|
|
||||||
mlxsw_sp_mp_hash_header_set(recr2_pl,
|
switch (net->ipv4.sysctl_fib_multipath_hash_policy) {
|
||||||
MLXSW_REG_RECR2_IPV4_EN_NOT_TCP_NOT_UDP);
|
case 0:
|
||||||
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_IPV4_EN_TCP_UDP);
|
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_IPV4_EN_NOT_TCP_NOT_UDP);
|
||||||
mlxsw_reg_recr2_ipv4_sip_enable(recr2_pl);
|
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_IPV4_EN_TCP_UDP);
|
||||||
mlxsw_reg_recr2_ipv4_dip_enable(recr2_pl);
|
mlxsw_reg_recr2_ipv4_sip_enable(recr2_pl);
|
||||||
if (only_l3)
|
mlxsw_reg_recr2_ipv4_dip_enable(recr2_pl);
|
||||||
return;
|
break;
|
||||||
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_TCP_UDP_EN_IPV4);
|
case 1:
|
||||||
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_IPV4_PROTOCOL);
|
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_IPV4_EN_NOT_TCP_NOT_UDP);
|
||||||
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_TCP_UDP_SPORT);
|
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_IPV4_EN_TCP_UDP);
|
||||||
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_TCP_UDP_DPORT);
|
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_TCP_UDP_EN_IPV4);
|
||||||
|
mlxsw_reg_recr2_ipv4_sip_enable(recr2_pl);
|
||||||
|
mlxsw_reg_recr2_ipv4_dip_enable(recr2_pl);
|
||||||
|
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_IPV4_PROTOCOL);
|
||||||
|
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_TCP_UDP_SPORT);
|
||||||
|
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_TCP_UDP_DPORT);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mlxsw_sp_mp6_hash_init(struct mlxsw_sp *mlxsw_sp, char *recr2_pl)
|
static void mlxsw_sp_mp6_hash_init(struct mlxsw_sp *mlxsw_sp, char *recr2_pl)
|
||||||
{
|
{
|
||||||
bool only_l3 = !ip6_multipath_hash_policy(mlxsw_sp_net(mlxsw_sp));
|
switch (ip6_multipath_hash_policy(mlxsw_sp_net(mlxsw_sp))) {
|
||||||
|
case 0:
|
||||||
mlxsw_sp_mp_hash_header_set(recr2_pl,
|
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_IPV6_EN_NOT_TCP_NOT_UDP);
|
||||||
MLXSW_REG_RECR2_IPV6_EN_NOT_TCP_NOT_UDP);
|
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_IPV6_EN_TCP_UDP);
|
||||||
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_IPV6_EN_TCP_UDP);
|
mlxsw_reg_recr2_ipv6_sip_enable(recr2_pl);
|
||||||
mlxsw_reg_recr2_ipv6_sip_enable(recr2_pl);
|
mlxsw_reg_recr2_ipv6_dip_enable(recr2_pl);
|
||||||
mlxsw_reg_recr2_ipv6_dip_enable(recr2_pl);
|
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_IPV6_NEXT_HEADER);
|
||||||
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_IPV6_NEXT_HEADER);
|
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_IPV6_FLOW_LABEL);
|
||||||
if (only_l3) {
|
break;
|
||||||
mlxsw_sp_mp_hash_field_set(recr2_pl,
|
case 1:
|
||||||
MLXSW_REG_RECR2_IPV6_FLOW_LABEL);
|
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_IPV6_EN_NOT_TCP_NOT_UDP);
|
||||||
} else {
|
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_IPV6_EN_TCP_UDP);
|
||||||
mlxsw_sp_mp_hash_header_set(recr2_pl,
|
mlxsw_sp_mp_hash_header_set(recr2_pl, MLXSW_REG_RECR2_TCP_UDP_EN_IPV6);
|
||||||
MLXSW_REG_RECR2_TCP_UDP_EN_IPV6);
|
mlxsw_reg_recr2_ipv6_sip_enable(recr2_pl);
|
||||||
mlxsw_sp_mp_hash_field_set(recr2_pl,
|
mlxsw_reg_recr2_ipv6_dip_enable(recr2_pl);
|
||||||
MLXSW_REG_RECR2_TCP_UDP_SPORT);
|
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_IPV6_NEXT_HEADER);
|
||||||
mlxsw_sp_mp_hash_field_set(recr2_pl,
|
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_TCP_UDP_SPORT);
|
||||||
MLXSW_REG_RECR2_TCP_UDP_DPORT);
|
mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_TCP_UDP_DPORT);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue