mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 14:34:13 -04:00
mlxsw: spectrum: Call mlxsw_sp_bridge_vxlan_{join, leave}() for VLAN-aware bridge
mlxsw_sp_bridge_vxlan_{join,leave}() are not called when a VXLAN device
joins or leaves a VLAN-aware bridge. As mentioned in the comment - when the
bridge is VLAN-aware, the VNI of the VXLAN device needs to be mapped to a
VLAN, but at this point no VLANs are configured on the VxLAN device. This
means that we can call the APIs, but there is no point to do that, as they
do not configure anything in such cases.
Next patch will extend mlxsw_sp_bridge_vxlan_{join,leave}() to set hardware
domain for VXLAN, this should be done also when a VXLAN device joins or
leaves a VLAN-aware bridge. Call the APIs, which for now do not do anything
in these flows.
Align the call to mlxsw_sp_bridge_vxlan_leave() to be called like
mlxsw_sp_bridge_vxlan_join(), only in case that the VXLAN device is up,
so move the check to be done before calling
mlxsw_sp_bridge_vxlan_{join,leave}(). This does not change the existing
behavior, as there is a similar check inside mlxsw_sp_bridge_vxlan_leave().
Signed-off-by: Amit Cohen <amcohen@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/994c1ea93520f9ea55d1011cd47dc2180d526484.1742224300.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
6d627a29aa
commit
a13fc7ebd9
@@ -5230,25 +5230,13 @@ static int mlxsw_sp_netdevice_vxlan_event(struct mlxsw_sp *mlxsw_sp,
|
||||
return 0;
|
||||
if (!mlxsw_sp_bridge_vxlan_is_valid(upper_dev, extack))
|
||||
return -EOPNOTSUPP;
|
||||
if (cu_info->linking) {
|
||||
if (!netif_running(dev))
|
||||
return 0;
|
||||
/* When the bridge is VLAN-aware, the VNI of the VxLAN
|
||||
* device needs to be mapped to a VLAN, but at this
|
||||
* point no VLANs are configured on the VxLAN device
|
||||
*/
|
||||
if (br_vlan_enabled(upper_dev))
|
||||
return 0;
|
||||
if (!netif_running(dev))
|
||||
return 0;
|
||||
if (cu_info->linking)
|
||||
return mlxsw_sp_bridge_vxlan_join(mlxsw_sp, upper_dev,
|
||||
dev, 0, extack);
|
||||
} else {
|
||||
/* VLANs were already flushed, which triggered the
|
||||
* necessary cleanup
|
||||
*/
|
||||
if (br_vlan_enabled(upper_dev))
|
||||
return 0;
|
||||
else
|
||||
mlxsw_sp_bridge_vxlan_leave(mlxsw_sp, dev);
|
||||
}
|
||||
break;
|
||||
case NETDEV_PRE_UP:
|
||||
upper_dev = netdev_master_upper_dev_get(dev);
|
||||
|
||||
Reference in New Issue
Block a user