• Steven Zou's avatar
    ice: Add switch recipe reusing feature · 95ad92d6
    Steven Zou authored
    New E810 firmware supports the corresponding functionality, so the driver
    allows PFs to subscribe the same switch recipes. Then when the PF is done
    with a switch recipes, the PF can ask firmware to free that switch recipe.
    
    When users configure a rule to PFn into E810 switch component, if there is
    no existing recipe matching this rule's pattern, the driver will request
    firmware to allocate and return a new recipe resource for the rule by
    calling ice_add_sw_recipe() and ice_alloc_recipe(). If there is an existing
    recipe matching this rule's pattern with different key value, or this is a
    same second rule to PFm into switch component, the driver checks out this
    recipe by calling ice_find_recp(), the driver will tell firmware to share
    using this same recipe resource by calling ice_subscribable_recp_shared()
    and ice_subscribe_recipe().
    
    When firmware detects that all subscribing PFs have freed the switch
    recipe, firmware will free the switch recipe so that it can be reused.
    
    This feature also fixes a problem where all switch recipes would eventually
    be exhausted because switch recipes could not be freed, as freeing a shared
    recipe could potentially break other PFs that were using it.
    Reviewed-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: default avatarAndrii Staikov <andrii.staikov@intel.com>
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Signed-off-by: default avatarSteven Zou <steven.zou@intel.com>
    Tested-by: default avatarMayank Sharma <mayank.sharma@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    95ad92d6
ice_switch.c 191 KB