[v2,57/66] net/ice/base: changes for reducing ice add adv rule time
diff mbox series

Message ID 20190611155221.2703-58-leyi.rong@intel.com
State Superseded, archived
Delegated to: Qi Zhang
Headers show
  • shared code update
Related show


Context Check Description
ci/Intel-compilation fail Compilation issues
ci/checkpatch success coding style OK

Commit Message

Rong, Leyi June 11, 2019, 3:52 p.m. UTC
While calling ice_find_recp we were calling ice_get_recp_to_prof_map
everytime we called ice_find_recp. ice_get_recp_to_prof_map is a very
expensive operation and we should try to reduce the number of times we
call this function. So moved it into ice_get_recp_frm_fw since we only
need to have fresh recp_to_profile mapping when we we check FW to see if
the recipe we are trying to add already exists in FW.

Signed-off-by: Shivanshu Shukla <shivanshu.shukla@intel.com>
Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
Signed-off-by: Leyi Rong <leyi.rong@intel.com>
 drivers/net/ice/base/ice_switch.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff mbox series

diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index 9f47ae96b..fe4d344a4 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -168,6 +168,8 @@  static ice_declare_bitmap(recipe_to_profile[ICE_MAX_NUM_RECIPES],
 static ice_declare_bitmap(available_result_ids, ICE_CHAIN_FV_INDEX_START + 1);
+static void ice_get_recp_to_prof_map(struct ice_hw *hw);
  * ice_get_recp_frm_fw - update SW bookkeeping from FW recipe entries
  * @hw: pointer to hardware structure
@@ -189,6 +191,10 @@  ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid)
 	struct ice_prot_lkup_ext *lkup_exts;
 	enum ice_status status;
+	/* Get recipe to profile map so that we can get the fv from
+	 * lkups that we read for a recipe from FW.
+	 */
+	ice_get_recp_to_prof_map(hw);
 	/* we need a buffer big enough to accommodate all the recipes */
 	tmp = (struct ice_aqc_recipe_data_elem *)ice_calloc(hw,
 		ICE_MAX_NUM_RECIPES, sizeof(*tmp));
@@ -4355,7 +4361,6 @@  static u16 ice_find_recp(struct ice_hw *hw, struct ice_prot_lkup_ext *lkup_exts)
 	struct ice_sw_recipe *recp;
 	u16 i;
-	ice_get_recp_to_prof_map(hw);
 	/* Initialize available_result_ids which tracks available result idx */
 	for (i = 0; i <= ICE_CHAIN_FV_INDEX_START; i++)
 		ice_set_bit(ICE_CHAIN_FV_INDEX_START - i,