> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of Steven
> Zou
> Sent: Thursday, February 8, 2024 8:49 AM
> To: [email protected]
> Cc: [email protected]; Zou, Steven <[email protected]>; Staikov, 
> Andrii
> <[email protected]>; Lobakin, Aleksander
> <[email protected]>; Nguyen, Anthony L
> <[email protected]>; Simon Horman <[email protected]>; Kitszel,
> Przemyslaw <[email protected]>
> Subject: [Intel-wired-lan] [PATCH iwl-next] ice: Add switch recipe reusing 
> feature
> 
> 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: Przemek Kitszel <[email protected]>
> Reviewed-by: Andrii Staikov <[email protected]>
> Reviewed-by: Simon Horman <[email protected]>
> Signed-off-by: Steven Zou <[email protected]>
> ---
>  .../net/ethernet/intel/ice/ice_adminq_cmd.h   |   2 +
>  drivers/net/ethernet/intel/ice/ice_common.c   |   2 +
>  drivers/net/ethernet/intel/ice/ice_switch.c   | 187 ++++++++++++++++--
>  drivers/net/ethernet/intel/ice/ice_switch.h   |   1 +
>  drivers/net/ethernet/intel/ice/ice_type.h     |   2 +
>  5 files changed, 177 insertions(+), 17 deletions(-)

Tested-by: Mayank Sharma <[email protected]>

Reply via email to