ixgbe_aci_list_caps(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… ixgbe_aci_list_caps β€” the kernel API manual, bestie edition πŸŽ€

okay so this is a page from the Kernel API Manual (section 9, iykyk) and honestly? it's giving "firmware gossip" and we're obsessed. it's called ixgbe_aci_list_caps and it's literally just asking the firmware "hey girl, what can you even do?" ✨


🌸 NAME 🌸

ixgbe_aci_list_caps β€” query function/device capabilities πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

int ixgbe_aci_list_caps (struct ixgbe_hw *hw , void *buf , u16 buf_size
, u32 *cap_count , enum ixgbe_aci_opc opc );

✨ ARGUMENTS ✨

  • hw β€” pointer to the HW struct 🫢 the main character, lowkey.
  • buf β€” a buffer to hold the capabilities. it's the little container where the tea gets stored πŸ’…
  • buf_size β€” size of the buffer. gotta make sure it's big enough, no cap.
  • cap_count β€” if not NULL, set to the number of capabilities reported πŸ“Š
  • opc β€” capabilities type to discover, device or function. you're picking which flavor of tea you want πŸ“

πŸ’œ DESCRIPTION πŸ’œ

Get the function (0x000A) or device (0x000B) capabilities description from firmware and store it in the buffer. fr fr, that's the whole vibe β€” you ask, firmware answers, the answer lands in buf. 🌈

If the cap_count pointer is not NULL, then it is set to the number of capabilities firmware will report. note that if the buffer size is too small, it is possible the command will return -ENOMEM. and the cap_count will still be updated in this case β€” like, even when it goes wrong it still tells you the count, which is kind of iconic behavior honestly 😭

⚠️ the recommendation, bestie: it is recommended that the buffer size be set to IXGBE_ACI_MAX_BUFFER_SIZE (the largest possible buffer that firmware could return) to avoid this. do that and you dodge the whole -ENOMEM situation. periodt. πŸ‘‘

πŸ”₯ RETURN πŸ”₯

the exit code of the operation. exit code of -ENOMEM means the buffer size is too small. πŸ’€ that's it, that's the whole return situation.


🧚 SEE ALSO 🧚

the kernel file ./drivers/net/ethernet/intel/ixgbe/ixgbe_e610.c β€” go read it, it's right there πŸŽ€

and then the whole friend group, in this exact order (yes, all of them, I'm not skipping anyone, that would be rude):

ixgbe_should_retry_aci_send_cmd_execute(9), ixgbe_aci_send_cmd_execute(9), ixgbe_aci_send_cmd(9), ixgbe_aci_check_event_pending(9), ixgbe_aci_get_event(9), ixgbe_fill_dflt_direct_cmd_desc(9), ixgbe_aci_get_fw_ver(9), ixgbe_aci_req_res(9), ixgbe_aci_release_res(9), ixgbe_acquire_res(9), ixgbe_release_res(9), ixgbe_parse_e610_caps(9), ixgbe_parse_valid_functions_cap(9), ixgbe_parse_vf_dev_caps(9), ixgbe_parse_vsi_dev_caps(9), ixgbe_parse_fdir_dev_caps(9), ixgbe_parse_dev_caps(9), ixgbe_parse_vf_func_caps(9), ixgbe_get_num_per_func(9), ixgbe_parse_vsi_func_caps(9), ixgbe_parse_func_caps(9), ixgbe_discover_dev_caps(9), ixgbe_discover_func_caps(9), ixgbe_get_caps(9), ixgbe_aci_disable_rxen(9), ixgbe_aci_get_phy_caps(9), ixgbe_copy_phy_caps_to_cfg(9), ixgbe_aci_set_phy_cfg(9), ixgbe_aci_set_link_restart_an(9), ixgbe_is_media_cage_present(9), ixgbe_get_media_type_from_phy_type(9), ixgbe_update_link_info(9), ixgbe_get_link_status(9), ixgbe_aci_get_link_info(9), ixgbe_aci_set_event_mask(9), ixgbe_configure_lse(9), ixgbe_start_hw_e610(9), ixgbe_aci_set_port_id_led(9), ixgbe_get_media_type_e610(9), ixgbe_setup_link_e610(9), ixgbe_check_link_e610(9), ixgbe_get_link_capabilities_e610(9), ixgbe_cfg_phy_fc(9), ixgbe_setup_fc_e610(9), ixgbe_fc_autoneg_e610(9), ixgbe_disable_rx_e610(9), ixgbe_fw_recovery_mode_e610(9), ixgbe_fw_rollback_mode_e610(9), ixgbe_init_phy_ops_e610(9), ixgbe_identify_phy_e610(9), ixgbe_setup_eee_e610(9), ixgbe_identify_module_e610(9), ixgbe_setup_phy_link_e610(9), ixgbe_set_phy_power_e610(9), ixgbe_enter_lplu_e610(9), ixgbe_init_eeprom_params_e610(9), ixgbe_aci_get_netlist_node(9), ixgbe_acquire_nvm(9), ixgbe_release_nvm(9), ixgbe_aci_read_nvm(9), ixgbe_aci_erase_nvm(9), ixgbe_aci_update_nvm(9), ixgbe_nvm_write_activate(9), ixgbe_nvm_validate_checksum(9), ixgbe_discover_flash_size(9), ixgbe_read_sr_base_address(9), ixgbe_read_sr_area_size(9), ixgbe_determine_active_flash_banks(9), ixgbe_get_flash_bank_offset(9), ixgbe_read_flash_module(9), ixgbe_read_nvm_module(9), ixgbe_read_netlist_module(9), ixgbe_read_orom_module(9), ixgbe_get_nvm_css_hdr_len(9), ixgbe_read_nvm_sr_copy(9), ixgbe_get_nvm_srev(9), ixgbe_get_orom_civd_data(9), ixgbe_get_orom_srev(9), ixgbe_get_orom_ver_info(9), ixgbe_get_inactive_orom_ver(9), ixgbe_get_nvm_ver_info(9), ixgbe_get_inactive_nvm_ver(9), ixgbe_get_active_nvm_ver(9), ixgbe_get_netlist_info(9), ixgbe_get_inactive_netlist_ver(9), ixgbe_get_flash_data(9), ixgbe_aci_nvm_update_empr(9), ixgbe_read_sr_word_aci(9), ixgbe_read_flat_nvm(9), ixgbe_read_sr_buf_aci(9), ixgbe_read_ee_aci_e610(9), ixgbe_read_ee_aci_buffer_e610(9), ixgbe_validate_eeprom_checksum_e610(9), ixgbe_reset_hw_e610(9), ixgbe_get_pfa_module_tlv(9), ixgbe_read_pba_string_e610(9)

like, the whole extended friend group showed up to the party. πŸ’…


and that's the page!! πŸ¦‹ this little number lives in ./drivers/net/ethernet/intel/i... (the source path got cut off, not me being mysterious, that's just how it printed 😭) and it's dated October 2026, still going by the name ixgbe_aci_list_caps(9) because consistency is key, bestie. πŸŒΈπŸ’–

πŸ“¦ where this page comes from