ice_rem_sw_rule_info(hw, rule_head);
else
ice_rem_adv_rule_info(hw, rule_head);
+ if (sw->recp_list[i].adv_rule &&
+ LIST_EMPTY(&sw->recp_list[i].filt_rules))
+ sw->recp_list[i].adv_rule = false;
}
}
recp->n_grp_count = rm->n_grp_count;
recp->tun_type = rm->tun_type;
recp->recp_created = true;
- recp->adv_rule = 1;
}
rm->root_buf = buf;
ice_free(hw, tmp);
ice_get_hw_vsi_num(hw, rem_vsi_handle);
fm_list->rule_info.sw_act.fwd_id.hw_vsi_id =
ice_get_hw_vsi_num(hw, rem_vsi_handle);
+ fm_list->rule_info.sw_act.vsi_handle = rem_vsi_handle;
/* Update the previous switch rule of "MAC forward to VSI" to
* "MAC fwd to VSI list"
rule_buf_sz, 1,
ice_aqc_opc_remove_sw_rules, NULL);
if (status == ICE_SUCCESS || status == ICE_ERR_DOES_NOT_EXIST) {
+ struct ice_switch_info *sw = hw->switch_info;
+
ice_acquire_lock(rule_lock);
LIST_DEL(&list_elem->list_entry);
ice_free(hw, list_elem->lkups);
ice_free(hw, list_elem);
ice_release_lock(rule_lock);
+ if (LIST_EMPTY(&sw->recp_list[rid].filt_rules))
+ sw->recp_list[rid].adv_rule = false;
}
ice_free(hw, s_rule);
}
list_itr->lkups_cnt, &rinfo);
}
}
- return ICE_ERR_PARAM;
+ /* either list is empty or unable to find rule */
+ return ICE_ERR_DOES_NOT_EXIST;
}
/**