• Ido Schimmel's avatar
    mlxsw: spectrum_acl: Add support for C-TCAM eRPs · b17b113e
    Ido Schimmel authored
    The number of eRPs that can be used by a single A-TCAM region is limited
    to 16. When more eRPs are needed, an ordinary circuit TCAM (C-TCAM) can
    be used to hold the extra eRPs.
    
    Unlike the A-TCAM, only a single (last) lookup is performed in the
    C-TCAM and not a lookup per-eRP. However, modeling the C-TCAM as extra
    eRPs will allow us to easily introduce support for pruning in a
    follow-up patch set and is also logically correct.
    
    The following diagram depicts the relation between both TCAMs:
                                                                     C-TCAM
    +-------------------+               +--------------------+    +-----------+
    |                   |               |                    |    |           |
    |  eRP #1 (A-TCAM)  +----> ... +----+  eRP #16 (A-TCAM)  +----+  eRP #17  |
    |                   |               |                    |    |    ...    |
    +-------------------+               +--------------------+    |  eRP #N   |
                                                                  |           |
                                                                  +-----------+
    Lookup order is from left to right.
    
    Extend the eRP core APIs with a C-TCAM parameter which indicates whether
    the requested eRP is to be used with the C-TCAM or not.
    
    Since the C-TCAM is only meant to absorb rules that can't fit in the
    A-TCAM due to exceeded number of eRPs or key collision, an error is
    returned when a C-TCAM eRP needs to be created when the eRP state
    machine is in its initial state (i.e., 'no masks'). This should only
    happen in the face of very unlikely errors when trying to push rules
    into the A-TCAM.
    
    In order not to perform unnecessary lookups, the eRP core will only
    enable a C-TCAM lookup for a given region if it knows there are C-TCAM
    eRPs present.
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Reviewed-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b17b113e
spectrum_acl_erp.c 34.7 KB