Skip to content

Commit c180f85

Browse files
author
Paolo Abeni
committed
Merge branch 'mlxsw-preparations-for-out-of-order-operations-patches'
Petr Machata says: ==================== mlxsw: Preparations for out-of-order-operations patches The mlxsw driver currently makes the assumption that the user applies configuration in a bottom-up manner. Thus netdevices need to be added to the bridge before IP addresses are configured on that bridge or SVI added on top of it. Enslaving a netdevice to another netdevice that already has uppers is in fact forbidden by mlxsw for this reason. Despite this safety, it is rather easy to get into situations where the offloaded configuration is just plain wrong. As an example, take a front panel port, configure an IP address: it gets a RIF. Now enslave the port to a bridge, and the RIF is gone. Remove the port from the bridge again, but the RIF never comes back. There is a number of similar situations, where changing the configuration there and back utterly breaks the offload. Over the course of the following several patchsets, mlxsw code is going to be adjusted to diminish the space of wrongly offloaded configurations. Ideally the offload state will reflect the actual state, regardless of the sequence of operation used to construct that state. No functional changes are intended in this patchset yet. Rather the patches prepare the codebase for easier introduction of functional changes in later patchsets. - In patch #1, extract a helper to join a RIF of a given port, if there is one. In patch #2, use it in a newly-added helper to join a LAG interface. - In patches #3, #4 and #5, add helpers that abstract away the rif->dev access. This will make it simpler in the future to change the way the deduction is done. In patch #6, do this for deduction from nexthop group info to RIF. - In patch #7, add a helper to destroy a RIF. So far RIF was destroyed simply by kfree'ing it. - In patch #8, add a helper to check if any IP addresses are configured on a netdevice. This helper will be useful later. - In patch #9, add a helper to migrate a RIF. This will be a convenient place to put extensions later on. - Patch #10 move IPIP initialization up to make ipip_ops_arr available earlier. ==================== Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
2 parents 2bddad9 + d4a37bf commit c180f85

File tree

4 files changed

+211
-109
lines changed

4 files changed

+211
-109
lines changed

drivers/net/ethernet/mellanox/mlxsw/spectrum.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4337,8 +4337,8 @@ static int mlxsw_sp_port_lag_join(struct mlxsw_sp_port *mlxsw_sp_port,
43374337
mlxsw_sp_port_vlan_router_leave(mlxsw_sp_port->default_vlan);
43384338

43394339
/* Join a router interface configured on the LAG, if exists */
4340-
err = mlxsw_sp_port_vlan_router_join(mlxsw_sp_port->default_vlan,
4341-
lag_dev, extack);
4340+
err = mlxsw_sp_router_port_join_lag(mlxsw_sp_port, lag_dev,
4341+
extack);
43424342
if (err)
43434343
goto err_router_join;
43444344

drivers/net/ethernet/mellanox/mlxsw/spectrum.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -755,10 +755,6 @@ int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp,
755755
void mlxsw_sp_router_fini(struct mlxsw_sp *mlxsw_sp);
756756
void mlxsw_sp_rif_macvlan_del(struct mlxsw_sp *mlxsw_sp,
757757
const struct net_device *macvlan_dev);
758-
int
759-
mlxsw_sp_port_vlan_router_join(struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan,
760-
struct net_device *l3_dev,
761-
struct netlink_ext_ack *extack);
762758
void
763759
mlxsw_sp_port_vlan_router_leave(struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan);
764760
void mlxsw_sp_rif_destroy_by_dev(struct mlxsw_sp *mlxsw_sp,

0 commit comments

Comments
 (0)