i40e_aq_add_udp_tunnel(9)
π i40e_aq_add_udp_tunnel(9) π
okay so bestie, we're in the Kernel API Manual today and this page is genuinely the shortest little baddie β the NAME line literally just says i40e_aq_add_udp_tunnel - and then trails off into nothing, like a text that got sent before she finished typing π. No summary. No vibe description. Just the function name and a hyphen. Iconic honestly. So let's get into what we do know.
β¨ SYNOPSIS β¨
int i40e_aq_add_udp_tunnel (struct i40e_hw *hw , u16 udp_port , u8
protocol_index , u8 *filter_index , struct i40e_asq_cmd_details
*cmd_details );
that's the whole thing. five args, one int return, no notes. slay π«Ά
π ARGUMENTS π
hwβ pointer to the hw struct π (yes the actual hardware struct, she's the main character here)udp_portβ the UDP port you're adding, and ngl this is the important bit: it goes in Host byte order when you hand it over πprotocol_indexβ the protocol index type πΈfilter_indexβ pointer to the filter index π (it's au8 *, so it's pointing at where the index lives, not just handing you a value)cmd_detailsβ pointer to the command details structure, orNULLβ your choice bestie, both are valid π
β οΈ NOTE β οΈ
okay this is the part you cannot skip, fr fr:
Firmware expects theudp_portvalue to be in Little Endian format, and this function will callcpu_to_le16to convert from Host byte order to Little Endian order. π§
so basically: you give her Host byte order, she does the cpu_to_le16 glow-up for you behind the scenes, and firmware gets exactly the Little Endian situation it wants. you don't have to do the conversion yourself. bless. π
π¦ SEE ALSO π¦
first up, the kernel file where this whole thing lives:
- Kernel file
./drivers/net/ethernet/intel/i40e/i40e_common.c
and now, the friend group π β buckle up because this is a long list and every single one of them is invited to the party:
i40e_set_mac_type(9), i40e_debug_aq(9), i40e_check_asq_alive(9), i40e_aq_queue_shutdown(9), i40e_aq_get_set_rss_lut(9), i40e_aq_get_rss_lut(9), i40e_aq_set_rss_lut(9), i40e_aq_get_set_rss_key(9), i40e_aq_get_rss_key(9), i40e_aq_set_rss_key(9), i40e_init_shared_code(9), i40e_aq_mac_address_read(9), i40e_aq_mac_address_write(9), i40e_get_mac_addr(9), i40e_get_port_mac_addr(9), i40e_pre_tx_queue_cfg(9), i40e_get_pba_string(9), i40e_get_media_type(9), i40e_poll_globr(9), i40e_pf_reset(9), i40e_clear_hw(9), i40e_clear_pxe_mode(9), i40e_led_is_mine(9), i40e_led_get(9), i40e_led_set(9), i40e_aq_get_phy_capabilities(9), i40e_aq_set_phy_config(9), i40e_set_fc(9), i40e_aq_set_mac_config(9), i40e_aq_clear_pxe_mode(9), i40e_aq_set_link_restart_an(9), i40e_aq_get_link_info(9), i40e_aq_set_phy_int_mask(9), i40e_aq_set_mac_loopback(9), i40e_aq_set_phy_debug(9), i40e_aq_add_vsi(9), i40e_aq_set_default_vsi(9), i40e_aq_clear_default_vsi(9), i40e_aq_set_vsi_unicast_promiscuous(9), i40e_aq_set_vsi_multicast_promiscuous(9), i40e_aq_set_vsi_mc_promisc_on_vlan(9), i40e_aq_set_vsi_uc_promisc_on_vlan(9), i40e_aq_set_vsi_bc_promisc_on_vlan(9), i40e_aq_set_vsi_broadcast(9), i40e_aq_get_vsi_params(9), i40e_aq_update_vsi_params(9), i40e_aq_get_switch_config(9), i40e_aq_set_switch_config(9), i40e_aq_get_firmware_version(9), i40e_aq_send_driver_version(9), i40e_get_link_status(9), i40e_update_link_info(9), i40e_aq_add_veb(9), i40e_aq_get_veb_parameters(9), i40e_prepare_add_macvlan(9), i40e_aq_add_macvlan(9), i40e_aq_add_macvlan_v2(9), i40e_aq_remove_macvlan(9), i40e_aq_remove_macvlan_v2(9), i40e_aq_send_msg_to_vf(9), i40e_aq_debug_read_register(9), i40e_aq_debug_write_register(9), i40e_aq_request_resource(9), i40e_aq_release_resource(9), i40e_aq_read_nvm(9), i40e_aq_erase_nvm(9), i40e_parse_discover_capabilities(9), i40e_aq_discover_capabilities(9), i40e_aq_update_nvm(9), i40e_aq_get_lldp_mib(9), i40e_aq_set_lldp_mib(9), i40e_aq_cfg_lldp_mib_change_event(9), i40e_aq_stop_lldp(9), i40e_aq_start_lldp(9), i40e_aq_set_dcb_parameters(9), i40e_aq_get_cee_dcb_config(9), i40e_aq_del_udp_tunnel(9), i40e_aq_delete_element(9), i40e_aq_dcb_updated(9), i40e_aq_tx_sched_cmd(9), i40e_aq_config_vsi_bw_limit(9), i40e_aq_config_vsi_tc_bw(9), i40e_aq_config_switch_comp_ets(9), i40e_aq_config_switch_comp_bw_config(9), i40e_aq_query_vsi_bw_config(9), i40e_aq_query_vsi_ets_sla_config(9), i40e_aq_query_switch_comp_ets_config(9), i40e_aq_query_port_ets_config(9), i40e_aq_query_switch_comp_bw_config(9), i40e_validate_filter_settings(9), i40e_set_filter_control(9), i40e_aq_add_rem_control_packet_filter(9), i40e_add_filter_to_drop_tx_flow_control_frames(9), i40e_aq_alternate_read(9), i40e_aq_suspend_port_tx(9), i40e_aq_resume_port_tx(9), i40e_set_pci_config_data(9), i40e_aq_debug_dump(9), i40e_read_bw_from_alt_ram(9), i40e_aq_configure_partition_bw(9), i40e_read_phy_register_clause22(9), i40e_write_phy_register_clause22(9), i40e_read_phy_register_clause45(9), i40e_write_phy_register_clause45(9), i40e_get_phy_address(9), i40e_led_get_reg(9), i40e_led_set_reg(9), i40e_led_get_phy(9), i40e_led_set_phy(9), i40e_aq_rx_ctl_read_register(9), i40e_read_rx_ctl(9), i40e_aq_rx_ctl_write_register(9), i40e_write_rx_ctl(9), i40e_mdio_if_number_selection(9), i40e_aq_set_phy_register_ext(9), i40e_aq_get_phy_register_ext(9), i40e_aq_write_ddp(9), i40e_aq_get_ddp_list(9), i40e_find_segment_in_package(9), i40e_ddp_exec_aq_section(9), i40e_validate_profile(9), i40e_write_profile(9), i40e_rollback_profile(9), i40e_aq_add_cloud_filters(9), i40e_aq_add_cloud_filters_bb(9), i40e_aq_rem_cloud_filters(9), i40e_aq_rem_cloud_filters_bb(9)
and that's the page!! short and sweet, lowkey the easiest read in the whole i40e saga π
sign-off time π β this one came from ./drivers/net/ethernet/intel/i40e, dated October 2026, and it's the i40e_aq_add_udp_tunnel(9) page π tysm for reading bestie, go add that UDP tunnel, ily, byeeeee π
β¨
π¦ 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