i40e_aq_dis...capabilities(9)
π i40e_aq_discover_capabilities π
okay so bestie, welcome to the Kernel API Manual entry for i40e_aq_discover_capabilities β yes the title is literally truncated with ... in the man page header, that's not me being lazy, that's just how it's printed π anyway. Sit down, grab a lil snack π, and let's get into it.
β¨ NAME β¨
i40e_aq_discover_capabilities β no subtitle, no tagline, the function IS the moment π
πΈ SYNOPSIS πΈ
int i40e_aq_discover_capabilities (struct i40e_hw *hw , void *buff , u16
buff_size , u16 *data_size , enum i40e_admin_queue_opc list_type_opc ,
struct i40e_asq_cmd_details *cmd_details );
it returns an int, it takes six things, and every single one of them matters. no skipping, i'm watching π
π¦ ARGUMENTS π¦
hwβ pointer to thehwstruct. the main character of this whole operation fr, this is your hardware, your whole vibe.buffβ a virtual buffer to hold the capabilities. like, this is where the good stuff lands. bring a buffer, get capabilities. iconique πbuff_sizeβ Size of the virtual buffer. your buffer's measurements, if you will. important!!! don't lie about it πdata_sizeβ Size of the returned data, or buff size needed ifAQ err==ENOMEM. so like β if your buffer was too small and the firmware hitENOMEM, this tells you how big a buffer you actually need. it's giving "here's what you should've brought" πlist_type_opcβ capabilities type to discover - pass in the command opcode. lowkey the most important arg ngl, you literally tell it what kind of capabilities you're hunting for by handing it the opcode.cmd_detailsβ pointer to command details structure orNULL. pop a struct in there if you've got one, or just passNULLand keep it simple, both are valid, we love a flexible queen π«Ά
π DESCRIPTION π
Get the device capabilities descriptions from the firmware.
that's it. that's the whole thing. you're literally asking the firmware "hey bestie, what can this device do, describe it to me" and the firmware is like "omg okay soβ" and dumps its whole capability lore into your buffer β¨β¨ no cap, this is the function that unlocks the device's whole personality.
π SEE ALSO π
the kernel file that lives here, character for character:
./drivers/net/ethernet/intel/i40e/i40e_common.c
and now... the extended friend group π (all (9), all iconic):
i40e_set_mac_typei40e_debug_aqi40e_check_asq_alivei40e_aq_queue_shutdowni40e_aq_get_set_rss_luti40e_aq_get_rss_luti40e_aq_set_rss_luti40e_aq_get_set_rss_keyi40e_aq_get_rss_keyi40e_aq_set_rss_keyi40e_init_shared_codei40e_aq_mac_address_readi40e_aq_mac_address_writei40e_get_mac_addri40e_get_port_mac_addri40e_pre_tx_queue_cfgi40e_get_pba_stringi40e_get_media_typei40e_poll_globri40e_pf_reseti40e_clear_hwi40e_clear_pxe_modei40e_led_is_minei40e_led_geti40e_led_seti40e_aq_get_phy_capabilitiesi40e_aq_set_phy_configi40e_set_fci40e_aq_set_mac_configi40e_aq_clear_pxe_modei40e_aq_set_link_restart_ani40e_aq_get_link_infoi40e_aq_set_phy_int_maski40e_aq_set_mac_loopbacki40e_aq_set_phy_debugi40e_aq_add_vsii40e_aq_set_default_vsii40e_aq_clear_default_vsii40e_aq_set_vsi_unicast_promiscuousi40e_aq_set_vsi_multicast_promiscuousi40e_aq_set_vsi_mc_promisc_on_vlani40e_aq_set_vsi_uc_promisc_on_vlani40e_aq_set_vsi_bc_promisc_on_vlani40e_aq_set_vsi_broadcasti40e_aq_get_vsi_paramsi40e_aq_update_vsi_paramsi40e_aq_get_switch_configi40e_aq_set_switch_configi40e_aq_get_firmware_versioni40e_aq_send_driver_versioni40e_get_link_statusi40e_update_link_infoi40e_aq_add_vebi40e_aq_get_veb_parametersi40e_prepare_add_macvlani40e_aq_add_macvlani40e_aq_add_macvlan_v2i40e_aq_remove_macvlani40e_aq_remove_macvlan_v2i40e_aq_send_msg_to_vfi40e_aq_debug_read_registeri40e_aq_debug_write_registeri40e_aq_request_resourcei40e_aq_release_resourcei40e_aq_read_nvmi40e_aq_erase_nvmi40e_parse_discover_capabilitiesi40e_aq_update_nvmi40e_aq_get_lldp_mibi40e_aq_set_lldp_mibi40e_aq_cfg_lldp_mib_change_eventi40e_aq_stop_lldpi40e_aq_start_lldpi40e_aq_set_dcb_parametersi40e_aq_get_cee_dcb_configi40e_aq_add_udp_tunneli40e_aq_del_udp_tunneli40e_aq_delete_elementi40e_aq_dcb_updatedi40e_aq_tx_sched_cmdi40e_aq_config_vsi_bw_limiti40e_aq_config_vsi_tc_bwi40e_aq_config_switch_comp_etsi40e_aq_config_switch_comp_bw_configi40e_aq_query_vsi_bw_configi40e_aq_query_vsi_ets_sla_configi40e_aq_query_switch_comp_ets_configi40e_aq_query_port_ets_configi40e_aq_query_switch_comp_bw_configi40e_validate_filter_settingsi40e_set_filter_controli40e_aq_add_rem_control_packet_filteri40e_add_filter_to_drop_tx_flow_control_framesi40e_aq_alternate_readi40e_aq_suspend_port_txi40e_aq_resume_port_txi40e_set_pci_config_datai40e_aq_debug_dumpi40e_read_bw_from_alt_rami40e_aq_configure_partition_bwi40e_read_phy_register_clause22i40e_write_phy_register_clause22i40e_read_phy_register_clause45i40e_write_phy_register_clause45i40e_get_phy_addressi40e_led_get_regi40e_led_set_regi40e_led_get_phyi40e_led_set_phyi40e_aq_rx_ctl_read_registeri40e_read_rx_ctli40e_aq_rx_ctl_write_registeri40e_write_rx_ctli40e_mdio_if_number_selectioni40e_aq_set_phy_register_exti40e_aq_get_phy_register_exti40e_aq_write_ddpi40e_aq_get_ddp_listi40e_find_segment_in_packagei40e_ddp_exec_aq_sectioni40e_validate_profilei40e_write_profilei40e_rollback_profilei40e_aq_add_cloud_filtersi40e_aq_add_cloud_filters_bbi40e_aq_rem_cloud_filtersi40e_aq_rem_cloud_filters_bb
like i said. huge friend group. iykyk π
ok that's the whole page diva, go read your capabilities, hydrate, and remember:data_sizewill snitch on you ifbuffwas too small π
mwah π this lil rewrite came to you from the fine folks over at ./drivers/net/ethernet/intel/i40e β dated October 2026, so mark your calendars bestie, it's giving future slay ποΈβ¨
π¦ 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