mlxsw: spectrum: Notify multicast router on RIF MTU changes
authorYotam Gigi <[email protected]>
Wed, 27 Sep 2017 06:23:21 +0000 (08:23 +0200)
committerDavid S. Miller <[email protected]>
Wed, 27 Sep 2017 18:33:28 +0000 (11:33 -0700)
Due to the fact that multicast routes hold the minimum MTU of all the
egress RIFs and trap packets that don't meet it, notify the mulitcast
router code on RIF MTU changes.

Signed-off-by: Yotam Gigi <[email protected]>
Reviewed-by: Ido Schimmel <[email protected]>
Signed-off-by: Jiri Pirko <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c

index 77584422ed082ad8f43e70996c101ca78f4d048f..dbd9c196fcfb0be7767b843120067aff7499ec1a 100644 (file)
@@ -5773,6 +5773,17 @@ int mlxsw_sp_netdevice_router_port_event(struct net_device *dev)
        if (err)
                goto err_rif_fdb_op;
 
+       if (rif->mtu != dev->mtu) {
+               struct mlxsw_sp_vr *vr;
+
+               /* The RIF is relevant only to its mr_table instance, as unlike
+                * unicast routing, in multicast routing a RIF cannot be shared
+                * between several multicast routing tables.
+                */
+               vr = &mlxsw_sp->router->vrs[rif->vr_id];
+               mlxsw_sp_mr_rif_mtu_update(vr->mr4_table, rif, dev->mtu);
+       }
+
        ether_addr_copy(rif->addr, dev->dev_addr);
        rif->mtu = dev->mtu;