ice_aq_req_res(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– ice_aq_req_res(9) β€” the kernel API glow-up πŸ’–

okay so bestie, gather round, because we're about to get into ice_aq_req_res from the Kernel API Manual and honestly? it's giving "lowkey important networking lore." no cap, this one's a little niche but super useful if you're deep in the Intel ice driver trenches. let's break it down together 🫢✨


✨ SYNOPSIS ✨

int ice_aq_req_res (struct ice_hw *hw , enum ice_aq_res_ids res , enum
ice_aq_res_access_type access , u8 sdp_number , u32 *timeout , struct
ice_sq_cd *cd );

like, that's the whole signature. copy it exactly, don't @ me πŸ’…


πŸŽ€ ARGUMENTS πŸŽ€

  • hw β€” pointer to the HW struct, aka the main character holding all the hardware tea β˜•
  • res β€” resource ID, the literal ID of the resource you're requesting πŸ‘‘
  • access β€” access type, because apparently resources have vibes and access levels
  • sdp_number β€” resource number, the specific number of this resource bestie πŸ”’
  • timeout β€” the maximum time in ms that the driver may hold the resource ⏳ (yes, milliseconds, keep up)
  • cd β€” pointer to command details structure or NULL, your choice, live your truth πŸ¦‹

🌸 DESCRIPTION 🌸

So what does this actually do? It requests common resource using the admin queue commands (0x0008). That's the vibe. And when you're attempting to acquire the Global Config Lock, the driver can learn of three states, and you need to know all of them, iykyk:

  1. 0 β€” acquired lock, and can perform download package βœ… slay, you got it
  2. -EIO β€” did not get lock, driver should fail to load πŸ’€ rough, but that's the rule
  3. -EALREADY β€” did not get lock, but another driver has successfully downloaded the package; the driver does not have to download the package and can continue loading πŸ™Œ iconic teamwork honestly
⚠️ important caveat bestie, don't skip this: Note that if the caller is in an acquire lock, perform action, release lock phase of operation, it is possible that the FW may detect a timeout and issue a CORER. In this case, the driver will receive a CORER interrupt and will have to determine its cause. The calling thread that is handling this flow will likely get an error propagated back to it indicating the Download Package, Update Package or the Release Resource AQ commands timed out. 😭 so like, watch out for that.

πŸ‘€ SEE ALSO πŸ‘€

the whole friend group, fr fr β€” no one gets left out:

Kernel file ./drivers/net/ethernet/intel/ice/ice_common.c

ice_dump_phy_type(9), ice_set_mac_type(9), ice_is_generic_mac(9), ice_clear_pf_cfg(9), ice_aq_manage_mac_read(9), ice_aq_get_phy_caps(9), ice_aq_get_link_topo_handle(9), ice_aq_get_netlist_node(9), ice_find_netlist_node(9), ice_is_media_cage_present(9), ice_get_media_type(9), ice_get_link_status_datalen(9), ice_aq_get_link_info(9), ice_fill_tx_timer_and_fc_thresh(9), ice_aq_set_mac_cfg(9), ice_init_fltr_mgmt_struct(9), ice_cleanup_fltr_mgmt_struct(9), ice_get_itr_intrl_gran(9), ice_wait_fw_load(9), ice_init_hw(9), ice_deinit_hw(9), ice_check_reset(9), ice_pf_reset(9), ice_reset(9), ice_copy_rxq_ctx_to_hw(9), ice_copy_rxq_ctx_from_hw(9), ice_pack_rxq_ctx(9), ice_unpack_rxq_ctx(9), ice_write_rxq_ctx(9), ice_read_rxq_ctx(9), ice_pack_txq_ctx(9), ice_pack_txq_ctx_full(9), ice_unpack_txq_ctx_full(9), ice_copy_txq_ctx_from_hw(9), ice_copy_txq_ctx_to_hw(9), ice_read_txq_ctx(9), ice_write_txq_ctx(9), ice_pack_txtime_ctx(9), ice_sbq_send_cmd(9), ice_sbq_rw_reg(9), ice_should_retry_sq_send_cmd(9), ice_sq_send_cmd_retry(9), ice_aq_send_cmd(9), ice_aq_get_fw_ver(9), ice_aq_send_driver_ver(9), ice_aq_q_shutdown(9), ice_aq_release_res(9), ice_acquire_res(9), ice_release_res(9), ice_aq_alloc_free_res(9), ice_alloc_hw_res(9), ice_free_hw_res(9), ice_get_num_per_func(9), ice_parse_common_caps(9), ice_recalc_port_limited_caps(9), ice_parse_vf_func_caps(9), ice_parse_vsi_func_caps(9), ice_parse_1588_func_caps(9), ice_parse_fdir_func_caps(9), ice_parse_func_caps(9), ice_func_id_to_logical_id(9), ice_parse_valid_functions_cap(9), ice_parse_vf_dev_caps(9), ice_parse_vsi_dev_caps(9), ice_parse_1588_dev_caps(9), ice_parse_fdir_dev_caps(9), ice_parse_sensor_reading_cap(9), ice_parse_nac_topo_dev_caps(9), ice_parse_dev_caps(9), ice_is_phy_rclk_in_netlist(9), ice_is_clock_mux_in_netlist(9), ice_is_cgu_in_netlist(9), ice_is_gps_in_netlist(9), ice_aq_list_caps(9), ice_discover_dev_caps(9), ice_discover_func_caps(9), ice_set_safe_mode_caps(9), ice_get_caps(9), ice_aq_manage_mac_write(9), ice_aq_clear_pxe_mode(9), ice_clear_pxe_mode(9), ice_aq_set_port_params(9), ice_is_100m_speed_supported(9), ice_get_link_speed_based_on_phy_type(9), ice_update_phy_type(9), ice_aq_set_phy_cfg(9), ice_update_link_info(9), ice_aq_get_phy_equalization(9), ice_aq_get_fec_stats(9), ice_cache_phy_user_req(9), ice_caps_to_fc_mode(9), ice_caps_to_fec_mode(9), ice_cfg_phy_fc(9), ice_set_fc(9), ice_phy_caps_equals_cfg(9), ice_copy_phy_caps_to_cfg(9), ice_cfg_phy_fec(9), ice_get_link_status(9), ice_aq_set_link_restart_an(9), ice_aq_set_event_mask(9), ice_aq_set_mac_loopback(9), ice_aq_set_port_id_led(9), ice_aq_get_port_options(9), ice_aq_set_port_option(9), ice_get_phy_lane_number(9), ice_aq_sff_eeprom(9), __ice_aq_get_set_rss_lut(9), ice_aq_get_rss_lut(9), ice_aq_set_rss_lut(9), __ice_aq_get_set_rss_key(9), ice_aq_get_rss_key(9), ice_aq_set_rss_key(9), ice_aq_add_lan_txq(9), ice_aq_dis_lan_txq(9), ice_aq_cfg_lan_txq(9), ice_aq_add_rdma_qsets(9), ice_aq_set_txtimeq(9), ice_get_lan_q_ctx(9), ice_ena_vsi_txq(9), ice_dis_vsi_txq(9), ice_cfg_vsi_qs(9), ice_cfg_vsi_lan(9), ice_cfg_vsi_rdma(9), ice_ena_vsi_rdma_qset(9), ice_dis_vsi_rdma_qset(9), ice_aq_get_cgu_input_pin_measure(9), ice_aq_get_cgu_abilities(9), ice_aq_set_input_pin_cfg(9), ice_aq_get_input_pin_cfg(9), ice_aq_set_output_pin_cfg(9), ice_aq_get_output_pin_cfg(9), ice_aq_get_cgu_dpll_status(9), ice_aq_set_cgu_dpll_config(9), ice_aq_set_cgu_ref_prio(9), ice_aq_get_cgu_ref_prio(9), ice_aq_get_cgu_info(9), ice_aq_set_phy_rec_clk_out(9), ice_aq_get_phy_rec_clk_out(9), ice_aq_get_sensor_reading(9), ice_replay_pre_init(9), ice_replay_vsi(9), ice_replay_post(9), ice_stat_update40(9), ice_stat_update32(9), ice_sched_query_elem(9), ice_aq_read_i2c(9), ice_aq_write_i2c(9), ice_get_pca9575_handle(9), ice_read_pca9575_reg(9), ice_aq_set_gpio(9), ice_aq_get_gpio(9), ice_is_fw_api_min_ver(9), ice_fw_supports_link_override(9), ice_get_link_default_override(9), ice_is_phy_caps_an_enabled(9), ice_is_fw_health_report_supported(9), ice_aq_set_health_status_cfg(9), ice_aq_set_lldp_mib(9), ice_fw_supports_lldp_fltr_ctrl(9), ice_lldp_fltr_add_remove(9), ice_lldp_execute_pending_mib(9), ice_fw_supports_report_dflt_cfg(9), ice_get_link_speed(9), ice_get_dest_cgu(9), ice_read_cgu_reg(9), ice_write_cgu_reg(9)


πŸ’œ that's the whole page bestie. every flag, every argument, every warning β€” preserved with love. now go forth and request those common resources responsibly. periodt. πŸ’œ

sign-off cuteness: this gem comes from ./drivers/net/ethernet/intel/ice and the page is dated October 2026, pulled straight from the Kernel API Manual for ice_aq_req_res(9). catch you in the next manpage, mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from