ice_add_adv_rule(9)
π ice_add_adv_rule(9) β Kernel API Manual π§
okay so this is page ice_add_adv_rule(9) from the Kernel API Manual, and bestie, we're about to learn how to make an advanced switch rule. it's giving low-level driver energy and i'm obsessed. let's go π«Ά
β¨ NAME β¨
ice_add_adv_rule β the helper function that creates an advanced switch rule. literally its whole job π
πΈ SYNOPSIS πΈ
int ice_add_adv_rule (struct ice_hw *hw , struct ice_adv_lkup_elem
*lkups , u16 lkups_cnt , struct ice_adv_rule_info *rinfo , struct
ice_rule_query_data *added_entry );
like look at that signature. five arguments. no cap, she's thorough π
π ARGUMENTS π
hwβ pointer to the hardware structure. yeah. the hardware. the main character π₯οΈlkupsβ info on the words that need to be looked up. and here's the slay: all the words together make one recipe. one recipe, bestie. that's the vibe check π₯lkups_cntβ the num of entries in thelkupsarray. keep it accurate or perish πrinfoβ everything else about the rule that needs to be programmed. the ~extra~ info, yk? πadded_entryβ this one returns stuff:recipe_id,rule_id, andvsi_handle. so she gives back. π
π real talk though: added_entry should be ignored in case of error. do not look at her if things went bad, she's not okay and neither are you. respect the boundary.
π DESCRIPTION π
so what does this function actually do? she programs rules. but hear me: this function can program only 1 rule at a time. one. single. rule. no bundle deals, no buy-one-get-one. periodt π
the lkups argument is what describes all the words that form the "lookup" portion of the recipe. and here's the cute part β these words can span multiple protocols. yeah, multiple. she's flexible like that πΈ
callers to this function need to pass in:
- a list of protocol headers with lookup information along, and
- a mask that determines which words are valid from the given protocol header
and then rinfo describes the other information related to this rule, such as forwarding IDs, the priority of this rule, etc. etc. basically the whole personality of the rule goes in rinfo π
π¦ SEE ALSO π¦
first up, the kernel file herself:
./drivers/net/ethernet/intel/ice/ice_switch.c
and now, the extended friend group. buckle up bestie, this is a long guest list π:
ice_init_def_sw_recp(9),ice_aq_get_sw_cfg(9),ice_aq_add_vsi(9),ice_aq_free_vsi(9),ice_aq_update_vsi(9),ice_is_vsi_valid(9),ice_get_hw_vsi_num(9),ice_get_vsi_ctx(9),ice_save_vsi_ctx(9),ice_clear_vsi_q_ctx(9),ice_clear_vsi_ctx(9),ice_clear_all_vsi_ctx(9),ice_add_vsi(9),ice_free_vsi(9),ice_update_vsi(9),ice_cfg_rdma_fltr(9)ice_aq_alloc_free_vsi_list(9),ice_aq_sw_rules(9),ice_aq_add_recipe(9),ice_aq_get_recipe(9),ice_update_recipe_lkup_idx(9),ice_aq_map_recipe_to_profile(9),ice_aq_get_recipe_to_profile(9),ice_init_chk_recipe_reuse_support(9),ice_alloc_recipe(9),ice_free_recipe_res(9),ice_release_recipe_res(9),ice_get_recp_to_prof_map(9),ice_get_recp_frm_fw(9)ice_fill_sw_info(9),ice_fill_eth_hdr(9),ice_fill_sw_rule(9),ice_add_marker_act(9),ice_create_vsi_list_map(9),ice_update_vsi_list_rule(9),ice_create_vsi_list_rule(9),ice_create_pkt_fwd_rule(9),ice_update_pkt_fwd_rule(9),ice_update_sw_rule_bridge_mode(9),ice_add_update_vsi_list(9)ice_find_rule_entry(9),ice_find_vsi_list_entry(9),ice_add_rule_internal(9),ice_remove_vsi_list_rule(9),ice_rem_update_vsi_list(9),ice_remove_rule_internal(9),ice_vlan_fltr_exist(9),ice_add_mac(9),ice_add_vlan_internal(9),ice_add_vlan(9),ice_add_eth_mac(9),ice_remove_eth_mac(9)ice_rem_sw_rule_info(9),ice_rem_adv_rule_info(9),ice_cfg_dflt_vsi(9),ice_vsi_uses_fltr(9),ice_check_if_dflt_vsi(9),ice_remove_mac(9),ice_remove_vlan(9),ice_add_entry_to_vsi_fltr_list(9),ice_add_to_vsi_fltr_list(9),ice_determine_promisc_mask(9),ice_remove_promisc(9),ice_clear_vsi_promisc(9),ice_set_vsi_promisc(9),ice_set_vlan_vsi_promisc(9),ice_remove_vsi_lkup_fltr(9),ice_remove_vsi_fltr(9)ice_alloc_res_cntr(9),ice_free_res_cntr(9),ice_share_res(9),ice_find_recp(9),ice_change_proto_id_to_dvm(9),ice_prot_type_to_id(9),ice_fill_valid_words(9),ice_fill_fv_word_index(9),ice_find_free_recp_res_idx(9),ice_calc_recp_cnt(9),ice_add_sw_recipe(9),ice_subscribe_recipe(9),ice_subscribable_recp_shared(9),ice_add_adv_recipe(9)ice_dummy_packet_add_vlan(9),ice_find_dummy_packet(9),ice_fill_adv_dummy_packet(9),ice_fill_adv_packet_tun(9),ice_fill_adv_packet_vlan(9),ice_find_adv_rule_entry(9),ice_adv_add_update_vsi_list(9),ice_replay_vsi_fltr(9),ice_adv_rem_update_vsi_list(9),ice_rem_adv_rule(9),ice_rem_adv_rule_by_id(9),ice_replay_vsi_adv_rule(9),ice_replay_vsi_all_fltr(9),ice_rm_all_sw_replay_rule_info(9)
like i said. huge friend group. every single one of them is invited to the function and you will be reading all of them π«Ά
π cute sign-off π
this little beauty comes to you from ./drivers/net/ethernet/intel/ice, dated October 2026, and she's page ice_add_adv_rule(9) of the Kernel API Manual. mwah π go program exactly one (1) rule, bestie. not two. πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms