mlxsw: spectrum_router: Handle MTU change of GRE netdevs
Update MTU of overlay loopback in accordance with the setting on the
tunnel netdevice.
Fixes: 0063587d35
("mlxsw: spectrum: Support decap-only IP-in-IP tunnels")
Signed-off-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
22b99058dd
Коммит
68c3cd9255
|
@ -1407,6 +1407,28 @@ mlxsw_sp_rif_ipip_lb_op(struct mlxsw_sp_rif_ipip_lb *lb_rif,
|
|||
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
|
||||
}
|
||||
|
||||
static int mlxsw_sp_netdevice_ipip_ol_update_mtu(struct mlxsw_sp *mlxsw_sp,
|
||||
struct net_device *ol_dev)
|
||||
{
|
||||
struct mlxsw_sp_ipip_entry *ipip_entry;
|
||||
struct mlxsw_sp_rif_ipip_lb *lb_rif;
|
||||
struct mlxsw_sp_vr *ul_vr;
|
||||
int err = 0;
|
||||
|
||||
ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
|
||||
if (ipip_entry) {
|
||||
lb_rif = ipip_entry->ol_lb;
|
||||
ul_vr = &mlxsw_sp->router->vrs[lb_rif->ul_vr_id];
|
||||
err = mlxsw_sp_rif_ipip_lb_op(lb_rif, ul_vr, true);
|
||||
if (err)
|
||||
goto out;
|
||||
lb_rif->common.mtu = ol_dev->mtu;
|
||||
}
|
||||
|
||||
out:
|
||||
return err;
|
||||
}
|
||||
|
||||
static void mlxsw_sp_netdevice_ipip_ol_up_event(struct mlxsw_sp *mlxsw_sp,
|
||||
struct net_device *ol_dev)
|
||||
{
|
||||
|
@ -1687,6 +1709,8 @@ int mlxsw_sp_netdevice_ipip_ol_event(struct mlxsw_sp *mlxsw_sp,
|
|||
extack = info->extack;
|
||||
return mlxsw_sp_netdevice_ipip_ol_change_event(mlxsw_sp,
|
||||
ol_dev, extack);
|
||||
case NETDEV_CHANGEMTU:
|
||||
return mlxsw_sp_netdevice_ipip_ol_update_mtu(mlxsw_sp, ol_dev);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче