t4_get_exprom_version(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ t4_get_exprom_version(9) πŸŽ€

okay so bestie, gather round, because we're looking at t4_get_exprom_version(9) today and honestly? she's a little icon. tiny function, big "let me just peek at the FLASH" energy. let's get into it πŸ’…


✨ NAME ✨

t4_get_exprom_version β€” return the Expansion ROM version (if any) πŸ¦‹

like, if any. that "if any" is doing a LOT of heavy lifting, keep it in mind.

int t4_get_exprom_version (struct adapter *adap , u32 *vers );

🌸 ARGUMENTS 🌸

  • adap β€” the adapter πŸ’– the whole reason we're here, our little hardware main character.
  • vers β€” where to place the version πŸŽ€ this is the pointer where the version number gets dropped off. she's the destination, not the vibe.

πŸ”₯ DESCRIPTION πŸ”₯

so here's the tea, bestie: this function reads the Expansion ROM header straight out of FLASH, and then hands you back the version number (if present, if present, no cap) through the vers return value pointer. 🫢

we return it in the Firmware Version Format because it's convenient β€” that's it, that's the whole reason, and honestly? valid. ⭐

and the return values, because you KNOW we don't skip those:

  • 0 on success ✨ slay, we got it.
  • -ENOENT if no Expansion ROM is present πŸ’€ which, yeah, means there's just... nothing there to read. no expansion ROM, no version, no problem (well, a -ENOENT shaped problem, but you get me).

so lowkey the whole function is: check FLASH, maybe find something, put it in vers, tell you how it went. iconic behaviour, no notes. πŸ‘‘

bestie please remember to actually have somewhere for vers to point, because we are writing to it. that's the whole contract. πŸ™ˆ

🌈 SEE ALSO 🌈

the kernel file lives right here, bestie:

./drivers/net/ethernet/chelsio/cxgb4/t4_hw.c

and here's the full friend group β€” the entire guest list, all (9) manual pages, exactly as they come πŸ’œ:

t4_wait_op_done_val(9), t4_set_reg_field(9), t4_read_indirect(9),
t4_write_indirect(9), t4_record_mbox(9), t4_wr_mbox_meat_timeout(9),
t4_memory_rw_init(9), t4_memory_update_win(9), t4_memory_rw_residual(9),
t4_memory_rw(9), t4_get_regs_len(9), t4_get_regs(9), t4_eeprom_ptov(9),
t4_seeprom_wp(9), t4_get_raw_vpd_params(9), t4_get_vpd_params(9),
t4_get_pfres(9), sf1_read(9), sf1_write(9), flash_wait_op(9),
t4_read_flash(9), t4_write_flash(9), t4_get_fw_version(9),
t4_get_bs_version(9), t4_get_tp_version(9), t4_get_vpd_version(9),
t4_get_scfg_version(9), t4_get_version_info(9), t4_dump_version_info(9),
t4_check_fw_version(9), t4_flash_erase_sectors(9), t4_flash_cfg_addr(9),
t4_load_fw(9), t4_phy_fw_ver(9), t4_load_phy_fw(9), t4_fwcache(9),
fwcaps16_to_caps32(9), fwcaps32_to_caps16(9), t4_link_acaps(9),
t4_link_l1cfg_core(9), t4_restart_aneg(9), t4_handle_intr_status(9),
t4_slow_intr_handler(9), t4_intr_enable(9), t4_intr_disable(9),
t4_config_rss_range(9), t4_config_glbl_rss(9), t4_config_vi_rss(9),
t4_read_rss(9), t4_tp_fw_ldst_rw(9), t4_tp_indirect_rw(9),
t4_tp_pio_read(9), t4_tp_pio_write(9), t4_tp_tm_pio_read(9),
t4_tp_mib_read(9), t4_read_rss_key(9), t4_write_rss_key(9),
t4_read_rss_pf_config(9), t4_read_rss_vf_config(9),
t4_read_rss_pf_map(9), t4_read_rss_pf_mask(9), t4_tp_get_tcp_stats(9),
t4_tp_get_err_stats(9), t4_tp_get_cpl_stats(9), t4_tp_get_rdma_stats(9),
t4_get_fcoe_stats(9), t4_get_usm_stats(9), t4_read_mtu_tbl(9),
t4_read_cong_tbl(9), t4_tp_wr_bits_indirect(9), init_cong_ctrl(9),
t4_load_mtus(9), t4_get_chan_txrate(9), t4_set_trace_filter(9),
t4_get_trace_filter(9), t4_pmtx_get_stats(9), t4_pmrx_get_stats(9),
compute_mps_bg_map(9), t4_get_mps_bg_map(9), t4_get_tp_e2c_map(9),
t4_get_tp_ch_map(9), t4_get_port_type_description(9),
t4_get_port_stats_offset(9), t4_get_port_stats(9), t4_get_lb_stats(9),
t4_mdio_rd(9), t4_mdio_wr(9), t4_sge_decode_idma_state(9),
t4_sge_ctxt_flush(9), t4_read_sge_dbqtimers(9), t4_fw_hello(9),
t4_fw_bye(9), t4_early_init(9), t4_fw_reset(9), t4_fw_halt(9),
t4_fw_restart(9), t4_fw_upgrade(9), t4_fl_pkt_align(9),
t4_fixup_host_params(9), t4_fw_initialize(9), t4_query_params_rw(9),
t4_set_params_timeout(9), t4_set_params(9), t4_cfg_pfvf(9),
t4_alloc_vi(9), t4_free_vi(9), t4_set_rxmode(9),
t4_free_encap_mac_filt(9), t4_free_raw_mac_filt(9),
t4_alloc_encap_mac_filt(9), t4_alloc_raw_mac_filt(9),
t4_alloc_mac_filt(9), t4_free_mac_filt(9), t4_change_mac(9),
t4_set_addr_hash(9), t4_enable_vi_params(9), t4_enable_vi(9),
t4_enable_pi_params(9), t4_identify_port(9), t4_iq_stop(9),
t4_iq_free(9), t4_eth_eq_free(9), t4_ctrl_eq_free(9),
t4_ofld_eq_free(9), t4_link_down_rc_str(9), fwcap_to_fwspeed(9),
lstatus_to_fwcap(9), t4_handle_get_port_info(9), t4_update_port_info(9),
t4_get_link_params(9), t4_handle_fw_rpl(9), init_link_config(9),
t4_prep_adapter(9), t4_shutdown_adapter(9), t4_bar2_sge_qregs(9),
t4_init_devlog_params(9), t4_init_sge_params(9), t4_init_tp_params(9),
t4_filter_field_shift(9), t4_init_portinfo(9), t4_read_cimq_cfg(9),
t4_read_cim_ibq(9), t4_read_cim_obq(9), t4_cim_read(9), t4_cim_write(9),
t4_cim_read_la(9), t4_tp_read_la(9), t4_idma_monitor_init(9),
t4_idma_monitor(9), t4_load_cfg(9), t4_set_vf_mac_acl(9),
t4_read_pace_tbl(9), t4_get_tx_sched(9), t4_sge_ctxt_rd_bd(9),
t4_i2c_rd(9), t4_set_vlan_acl(9), modify_device_id(9), t4_load_boot(9),
t4_flash_bootcfg_addr(9)

like, that's the whole group chat and every single one of them got invited. iykyk 🧚


and that's the page!! πŸ“ this little cutie comes to you courtesy of ./drivers/net/ethernet/chelsio... and she's stamped October 2026 β€” so go forth, read that FLASH, and remember: vers is a pointer, treat her right. mwah πŸ’–πŸ’…βœ¨

πŸ“¦ where this page comes from