Skip to content
  • Paul Blakey's avatar
    net/mlx5: E-Switch, Add chains and priorities · e52c2802
    Paul Blakey authored
    
    
    A chain is a group of priorities, so use the fdb parallel
    sub namespaces to implement chains, and a flow table for each
    priority in them.
    
    Because these namespaces are parallel and in series to the slow path
    fdb, the chains aren't connected to one another (but to the slow path),
    and one must use a explicit goto action to reach a different chain.
    
    Flow tables for the priorities will be created on demand and destroyed
    once not used.
    
    The Firmware has four pools of tables for sizes S/XS/M/L (4k, 64k, 1m, 4m).
    We maintain ghost copies of the pools occupancy.
    
    When a new table is to be created, we scan the pools from large to small
    and find the 1st table size which can be now created. When a table is
    destroyed, we update the relevant pool.
    
    Multi chain/prio isn't enabled yet by this patch, for now all flows
    will use the default chain 0, and prio 1.
    
    Signed-off-by: default avatarPaul Blakey <paulb@mellanox.com>
    Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    e52c2802