• Ido Schimmel's avatar
    mlxsw: spectrum_router: Split nexthop group configuration to a different struct · 7f7a417e
    Ido Schimmel authored
    Currently, the individual nexthops member in the group and attributes of
    the group (e.g., its type) are stored in the same struct (i.e., 'struct
    mlxsw_sp_nexthop_group'). This is fine since the individual nexthops
    cannot change during the lifetime of the group.
    
    With nexthop objects this is no longer the case. An existing nexthop
    group can be replaced to use a new set of nexthops. Creating a new
    struct whenever a group is replaced entails replacing the group pointer
    of all the routes (i.e., 'struct mlxsw_sp_fib_entry') using the group.
    
    Avoid this inefficient step by splitting the nexthop group configuration
    to a different struct (i.e., 'struct mlxsw_sp_nexthop_group_info').
    When a nexthop group is replaced a new group info struct is created and
    the individual rotues do not need to be touched.
    
    Illustration after the change:
    
      mlxsw_sp_fib_entry    mlxsw_sp_nexthop_group    mlxsw_sp_nexthop_group_info
    +-------------------+  +----------------------+  +---------------------------+
    | nh_group;         +--> nhgi;                +-->                           |
    |                   |  |                      |  |                           |
    +-------------------+  +----------------------+  +---------------------------+
    
    No functional changes intended.
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    7f7a417e
spectrum_router.c 233 KB