• Ido Schimmel's avatar
    mlxsw: spectrum_router: Remove unnecessary prefix lengths from LPM tree · 2b52ce02
    Ido Schimmel authored
    In commit fc922bb0 ("mlxsw: spectrum_router: Use one LPM tree for
    all virtual routers") I tried to make sure only used prefix lengths are
    present in the LPM tree shared between all virtual routers.
    
    However, this optimization had to be removed in commit a69518cf
    ("mlxsw: spectrum_router: Avoid expensive lookup during route removal"),
    since determining the used prefix lengths required us to traverse all
    the active virtual routers, which could result in a hung task depending
    on the number of VRFs and whether routes were removed due to abort or
    not.
    
    Re-introduce the optimization by moving the prefix usage accounting from
    the virtual routers to the LPM tree, as this accounting is only used in
    order to determine the tree's structure.
    
    To make the sharing of the trees more explicit, the two trees (for IPv4
    and IPv6) are stored in the shared router struct and upon the creation
    of a virtual router it is immediately bound to both.
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2b52ce02
spectrum_router.c 191 KB