ice_aq_sff_eeprom(9)
π ice_aq_sff_eeprom(9) π
okay so welcome to the man page for ice_aq_sff_eeprom, bestie β it lives in section 9 of the Kernel API Manual and it's all about poking at the SFF EEPROM on an Intel ice NIC. pull up a chair π
β¨ NAME β¨
ice_aq_sff_eeprom β
and that's it. that's the whole name line. the original literally just gives you the function name, a dash, and thenβ¦ nothing π no one-line summary, no blurb, no nothing. so we move on, no cap.
πΈ SYNOPSIS πΈ
int ice_aq_sff_eeprom (struct ice_hw *hw , u16 lport , u8 bus_addr , u16
mem_addr , u8 page , u8 set_page , u8 *data , u8 length , bool write ,
struct ice_sq_cd *cd );
that's the whole signature, exactly as written β don't let me catch you "tidying" it up π
π¦ ARGUMENTS π¦
okay so this function takes a lot of arguments and every single one matters, so let's go one by one, no skipping π
hwβ pointer to the HW struct. yes queen, the hardware struct, the main character of the whole thing πlportβ bits[7:0]= logical port, bit[8]= logical port valid. so the low bits are the port itself and that top bit is the "hey, this port is actually valid" flag β¨bus_addrβ I2C bus address of the eeprom (typically0xA0,0=topo default). so0xA0is the usual vibe, and0means you want the topo default π«Άmem_addrβ I2C offset. lower 8 bits for address, 8 upper bits zero padding. so the real address lives down in the low byte and the top byte is just padding, lowkey decorative πpageβ QSFP page. yep, that's the page πΈset_pageβ set or ignore the page. your call: actually apply it, or just act like it's not there πdataβ pointer to data buffer to be read/written to the I2C device. the actual payload, the whole point πlengthβ1-16for read,1for write. so reads can be up to 16 bytes but writes are one byte only, periodt πwriteβ0read,1for write. the switch between "gimme the tea" and "here's the tea" π₯cdβ pointer to command details structure orNULL. optional detail-holder,NULLis totally fine π
π« DESCRIPTION π«
Read/Write SFF EEPROM (0x06EE)
that's the entire description in the original, bestie β one line, and the opcode 0x06EE is doing all the heavy lifting. it's giving "minimal effort, maximum mystique" π
π SEE ALSO π
alright, so this is the part where the original just dumps the entire neighborhood group chat on you. kernel file: ./drivers/net/ethernet/intel/ice/ice_common.c β and then every friend of the family, in the exact order they appeared, because we do NOT skip anyone in this house π
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_req_res(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_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)
okay that's everyone, no one left out, we are nothing if not thorough π β¨
heads up bestie: that's a genuinely long list, so if you're hunting for a specific function, just ctrl-f the name and let the terminal do the work π«Ά
and that's the whole page!! π this little cutie comes to you from the kernel source tree at ./drivers/net/ethernet/intel/ice, dated October 2026, wearing the very stylish identifier ice_aq_sff_eeprom(9) β go read the source, it's iconic, periodt ππ₯
π¦ 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