• Dan Nowlin's avatar
    ice: create advanced switch recipe · fd2a6b71
    Dan Nowlin authored
    These changes introduce code for creating advanced recipes for the
    switch in hardware.
    
    There are a couple of recipes already defined in the HW. They apply to
    matching on basic protocol headers, like MAC, VLAN, MACVLAN,
    ethertype or direction (promiscuous), etc.. If the user wants to match on
    other protocol headers (eg. ip address, src/dst port etc.) or different
    variation of already supported protocols, there is a need to create
    new, more complex recipe. That new recipe is referred as
    'advanced recipe', and the filtering rule created on top of that recipe
    is called 'advanced rule'.
    
    One recipe can have up to 5 words, but the first word is always reserved
    for match on switch id, so the driver can define up to 4 words for one
    recipe. To support recipes with more words up to 5 recipes can be
    chained, so 20 words can be programmed for look up.
    
    Input for adding recipe function is a list of protocols to support. Based
    on this list correct profile is being chosen. Correct profile means
    that it contains all protocol types from a list. Each profile have up to
    48 field vector words and each of this word have protocol id and offset.
    These two fields need to match with input data for adding recipe
    function. If the correct profile can't be found the function returns an
    error.
    
    The next step after finding the correct profile is grouping words into
    groups. One group can have up to 4 words. This is done to simplify
    sending recipes to HW (because recipe also can have up to 4 words).
    
    In case of chaining (so when look up consists of more than 4 words) last
    recipe will always have results from the previous recipes used as words.
    
    A recipe to profile map is used to store information about which profile
    is associate with this recipe. This map is an array of 64 elements (max
    number of recipes) and each element is a 256 bits bitmap (max number of
    profiles)
    
    Profile to recipe map is used to store information about which recipe is
    associate with this profile. This map is an array of 256 elements (max
    number of profiles) and each element is a 64 bits bitmap (max number of
    recipes)
    Signed-off-by: default avatarDan Nowlin <dan.nowlin@intel.com>
    Signed-off-by: default avatarWojciech Drewek <wojciech.drewek@intel.com>
    Tested-by: default avatarSandeep Penigalapati <sandeep.penigalapati@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    fd2a6b71
ice_flex_pipe.h 2.11 KB