mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-16 10:54:09 +08:00
ice: cleanup rules info
Change ICE_SW_LKUP_LAST to ICE_MAX_NUM_RECIPES as for now there also can be recipes other than the default. Free all structures created for advanced recipes in cleanup function. Write a function to clean allocated structures on advanced rule info. Signed-off-by: Victor Raj <victor.raj@intel.com> Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com> Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
8bb98f33de
commit
8b8ef05b77
@ -595,17 +595,42 @@ static void ice_cleanup_fltr_mgmt_struct(struct ice_hw *hw)
|
||||
list_del(&v_pos_map->list_entry);
|
||||
devm_kfree(ice_hw_to_dev(hw), v_pos_map);
|
||||
}
|
||||
recps = hw->switch_info->recp_list;
|
||||
for (i = 0; i < ICE_SW_LKUP_LAST; i++) {
|
||||
struct ice_fltr_mgmt_list_entry *lst_itr, *tmp_entry;
|
||||
recps = sw->recp_list;
|
||||
for (i = 0; i < ICE_MAX_NUM_RECIPES; i++) {
|
||||
struct ice_recp_grp_entry *rg_entry, *tmprg_entry;
|
||||
|
||||
recps[i].root_rid = i;
|
||||
mutex_destroy(&recps[i].filt_rule_lock);
|
||||
list_for_each_entry_safe(lst_itr, tmp_entry,
|
||||
&recps[i].filt_rules, list_entry) {
|
||||
list_del(&lst_itr->list_entry);
|
||||
devm_kfree(ice_hw_to_dev(hw), lst_itr);
|
||||
list_for_each_entry_safe(rg_entry, tmprg_entry,
|
||||
&recps[i].rg_list, l_entry) {
|
||||
list_del(&rg_entry->l_entry);
|
||||
devm_kfree(ice_hw_to_dev(hw), rg_entry);
|
||||
}
|
||||
|
||||
if (recps[i].adv_rule) {
|
||||
struct ice_adv_fltr_mgmt_list_entry *tmp_entry;
|
||||
struct ice_adv_fltr_mgmt_list_entry *lst_itr;
|
||||
|
||||
mutex_destroy(&recps[i].filt_rule_lock);
|
||||
list_for_each_entry_safe(lst_itr, tmp_entry,
|
||||
&recps[i].filt_rules,
|
||||
list_entry) {
|
||||
list_del(&lst_itr->list_entry);
|
||||
devm_kfree(ice_hw_to_dev(hw), lst_itr->lkups);
|
||||
devm_kfree(ice_hw_to_dev(hw), lst_itr);
|
||||
}
|
||||
} else {
|
||||
struct ice_fltr_mgmt_list_entry *lst_itr, *tmp_entry;
|
||||
|
||||
mutex_destroy(&recps[i].filt_rule_lock);
|
||||
list_for_each_entry_safe(lst_itr, tmp_entry,
|
||||
&recps[i].filt_rules,
|
||||
list_entry) {
|
||||
list_del(&lst_itr->list_entry);
|
||||
devm_kfree(ice_hw_to_dev(hw), lst_itr);
|
||||
}
|
||||
}
|
||||
if (recps[i].root_buf)
|
||||
devm_kfree(ice_hw_to_dev(hw), recps[i].root_buf);
|
||||
}
|
||||
ice_rm_all_sw_replay_rule_info(hw);
|
||||
devm_kfree(ice_hw_to_dev(hw), sw->recp_list);
|
||||
|
@ -2682,6 +2682,27 @@ ice_rem_sw_rule_info(struct ice_hw *hw, struct list_head *rule_head)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_rem_adv_rule_info
|
||||
* @hw: pointer to the hardware structure
|
||||
* @rule_head: pointer to the switch list structure that we want to delete
|
||||
*/
|
||||
static void
|
||||
ice_rem_adv_rule_info(struct ice_hw *hw, struct list_head *rule_head)
|
||||
{
|
||||
struct ice_adv_fltr_mgmt_list_entry *tmp_entry;
|
||||
struct ice_adv_fltr_mgmt_list_entry *lst_itr;
|
||||
|
||||
if (list_empty(rule_head))
|
||||
return;
|
||||
|
||||
list_for_each_entry_safe(lst_itr, tmp_entry, rule_head, list_entry) {
|
||||
list_del(&lst_itr->list_entry);
|
||||
devm_kfree(ice_hw_to_dev(hw), lst_itr->lkups);
|
||||
devm_kfree(ice_hw_to_dev(hw), lst_itr);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_cfg_dflt_vsi - change state of VSI to set/clear default
|
||||
* @hw: pointer to the hardware structure
|
||||
@ -5183,12 +5204,15 @@ void ice_rm_all_sw_replay_rule_info(struct ice_hw *hw)
|
||||
if (!sw)
|
||||
return;
|
||||
|
||||
for (i = 0; i < ICE_SW_LKUP_LAST; i++) {
|
||||
for (i = 0; i < ICE_MAX_NUM_RECIPES; i++) {
|
||||
if (!list_empty(&sw->recp_list[i].filt_replay_rules)) {
|
||||
struct list_head *l_head;
|
||||
|
||||
l_head = &sw->recp_list[i].filt_replay_rules;
|
||||
ice_rem_sw_rule_info(hw, l_head);
|
||||
if (!sw->recp_list[i].adv_rule)
|
||||
ice_rem_sw_rule_info(hw, l_head);
|
||||
else
|
||||
ice_rem_adv_rule_info(hw, l_head);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user