t4_load_phy_fw(9)
π t4_load_phy_fw(9) β Kernel API Manual π
okay so bestie, welcome to t4_load_phy_fw from the Kernel API Manual (yes, section 9, we're in kernel-land now π§). this is the port PHY firmware downloader, and she is literally the main character of getting your PHY firmware onto the adapter. buckle up π
β¨ NAME β¨
t4_load_phy_fw β download port PHY firmware π¦
β¨ SYNOPSIS β¨
int t4_load_phy_fw (struct adapter *adap , int win , int
(*phy_fw_version)(const u8 *, size_t) , const u8 *phy_fw_data , size_t
phy_fw_size );
β¨ ARGUMENTS β¨
adapβ the adapter π like, the whole entire card you're talking to.winβ the PCI-E Memory Window index to use fort4_memory_rw. that's the window, girl. pick one.phy_fw_versionβ function to check PHY firmware versions. a lil callback that does the "is this actually newer tho" check for you πΈphy_fw_dataβ the PHY firmware image to write. this is the actual firmware blob, the payload, the moment πphy_fw_sizeβ image size. how many bytes of firmware we're serving, no cap.
β¨ DESCRIPTION β¨
Transfer the specified PHY firmware to the adapter. that's the whole job bestie, we ship the firmware over and we ship it good β¨
If a non-NULL phy_fw_version is supplied, then it will be used to determine if it's necessary to perform the transfer by comparing the version of any existing adapter PHY firmware with that of the passed in PHY firmware image. so like β if you hand over the version-checker, she'll peek at what the adapter already has and be like "okay do we even need this". no pointless flashing in this house π
A negative error number will be returned if an error occurs. If version number support is available and there's no need to upgrade the firmware, 0 will be returned. If firmware is successfully transferred to the adapter, 1 will be returned. so basically β π negative = bad, 0 = already slayed, no notes, 1 = we actually sent it and it ate π
β οΈ NOTE β οΈ
some adapters only have local RAM to store the PHY firmware. As a result, a RESET of the adapter would cause that RAM to lose its contents. so likeβ¦ the RAM forgets everything. gone. girl, bye. Thus, loading PHY firmware on such adapters must happen after any FW_RESET_CMDs ... π
fr fr order matters here β load the PHY firmware after the FW_RESET_CMDs, or your carefully delivered firmware just evaporates into the void π
π«Ά SEE ALSO π«Ά
Kernel file ./drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
and the entire extended friend group (all of them, no one left out π):
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_exprom_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_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)
and that's the page, bestie π this one lives at ./drivers/net/ethernet/chelsio... (that's the source/version line, and yes it's exactly that truncated-looking, iykyk) and it's dated October 2026. lil t4_load_phy_fw(9) stamp of approval at the bottom, 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