On 9/26/2023 4:11 PM, Przemek Kitszel wrote:
On 9/26/23 05:12, Steven Zou wrote:
If E810 firmware supports the corresponding functionality, 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.

Signed-off-by: Steven Zou <[email protected]>
---
v2:
- fix nvm version detection for the feature (Thanks to Przemek)
- fix more small commit message Reviewed-by Przemek

v3: refactor ice_alloc_recipe to support both legacy and new methods

v4:
- a small change in ice_subscribe_recipe, sw_resp instead of flu_resp
- move ice_subscribe_recipe() and ice_subscribable_recp_shared() definitions
down to before ice_add_adv_recipe()
- add commit message for new function of ice_subscribe_recipe()

v5:
- refactor ice_init_chk_subscribable_recipe_support() and replace it to
ice_init_chk_recipe_reuse_support()
- add a newline before 'return' in ice_init_hw()
- remove redundant cast of u8
- make u8 and u16 to u32 in the subfunctions

v6:
- fix AdminQ data type from/to FW and casting for bitmap type issue
- fix hole padding with adding new member in ice_hw structure
- fix setting the flag of recp_created issue
- fix redundant lable
- change bit traversal method
---
  .../net/ethernet/intel/ice/ice_adminq_cmd.h   |   4 +-
  drivers/net/ethernet/intel/ice/ice_common.c   |   2 +
  drivers/net/ethernet/intel/ice/ice_lag.c      |   4 +-
  drivers/net/ethernet/intel/ice/ice_switch.c   | 247 +++++++++++++++---
  drivers/net/ethernet/intel/ice/ice_switch.h   |   5 +-
  drivers/net/ethernet/intel/ice/ice_type.h     |   2 +
  6 files changed, 229 insertions(+), 35 deletions(-)

Hi, we are not yet done with our pre-IWL (e1000) review.

General rule is to have Reviewed-by: tag prior to posting here.
And public submission versioning should start with v1, without the changelog from e1000.

Normally one should also CC netdev, which you have not.


Thank you very much!
My mistake.
Please ignore my submission this time here.


_______________________________________________
Intel-wired-lan mailing list
[email protected]
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

Reply via email to