]> git.baikalelectronics.ru Git - kernel.git/commitdiff
mlxsw: spectrum_router: Consolidate MAC profiles when possible
authorDanielle Ratson <danieller@nvidia.com>
Tue, 14 Dec 2021 10:21:36 +0000 (12:21 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Dec 2021 12:56:10 +0000 (12:56 +0000)
Currently, when setting a router interface (RIF) MAC address while the
MAC profile is not shared with other RIFs, the profile is edited so that
the new MAC address is assigned to it.

This does not take into account a situation in which the new MAC address
already matches an existing MAC profile. In that situation, two MAC
profiles will be occupied even though they hold MAC addresses from the
same profile.

In order to prevent that, add a check to ensure that editing a MAC
profile takes place only when the new MAC address does not match an
existing profile.

Fixes: 9bba70d9958b6 ("mlxsw: spectrum_router: Add RIF MAC profiles support")
Reported-by: Maksym Yaremchuk <maksymy@nvidia.com>
Tested-by: Maksym Yaremchuk <maksymy@nvidia.com>
Signed-off-by: Danielle Ratson <danieller@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c

index 217e3b351dfe6048f90e9f93930a23fde8b2e09f..c34833ff1dded21a29c0af0f296ec4749c13f454 100644 (file)
@@ -8494,7 +8494,8 @@ mlxsw_sp_rif_mac_profile_replace(struct mlxsw_sp *mlxsw_sp,
        u8 mac_profile;
        int err;
 
-       if (!mlxsw_sp_rif_mac_profile_is_shared(rif))
+       if (!mlxsw_sp_rif_mac_profile_is_shared(rif) &&
+           !mlxsw_sp_rif_mac_profile_find(mlxsw_sp, new_mac))
                return mlxsw_sp_rif_mac_profile_edit(rif, new_mac);
 
        err = mlxsw_sp_rif_mac_profile_get(mlxsw_sp, new_mac,