> -----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]>
