t4_wr_mbox_meat_timeout(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ t4_wr_mbox_meat_timeout ✨

Okay bestie, welcome to the Kernel API Manual page for t4_wr_mbox_meat_timeout. This is literally the function that sends a command to firmware (FW) through a mailbox, and it's giving main character energy for kernel-to-FW communication. πŸ’…


🌸 NAME 🌸

t4_wr_mbox_meat_timeout β€” send a command to FW through the given mailbox. No cap, that's the whole vibe. πŸ’Œ


πŸ¦‹ SYNOPSIS πŸ¦‹

int t4_wr_mbox_meat_timeout (struct adapter *adap , int mbox , const
void *cmd , int size , void *rpl , bool sleep_ok , int timeout );

πŸŽ€ ARGUMENTS πŸŽ€

  • adap β€” the adapter. Like, the whole vibe of the hardware you're talking to. πŸ–₯️
  • mbox β€” index of the mailbox to use. Pick your slot, bestie. πŸ“¬
  • cmd β€” the command to write. This is what you're saying to FW. πŸ’¬
  • size β€” command length in bytes. Gotta know how much you're sending. πŸ“
  • rpl β€” where to optionally store the reply. If you want FW to text back, put a spot here. πŸ“±
  • sleep_ok β€” if true we may sleep while awaiting command completion. Nap friendly? 😴
  • timeout β€” time to wait for command to finish before timing out. Don't wait forever, bestie. ⏰

✨ DESCRIPTION ✨

So what does this actually do? It sends the given command to FW through the selected mailbox and waits for FW to execute it. If rpl is not NULL, it's used to store FW's reply to the command. The command and its optional reply are of the same length. FW can take up to FW_CMD_MAX_TIMEOUT ms to respond. sleep_ok determines whether we may sleep while awaiting the response. If sleeping is allowed we use progressive backoff; otherwise we spin. πŸ”„

The return value is 0 on success or a negative errno on failure. A failure can happen either because we are not able to execute the command, or FW executes it but signals an error. In the latter case the return value is the error code indicated by FW (negated). So like, if FW says "nah", you get that error back, but negated. Periodt. πŸ’€

This function is literally the MVP of mailbox communication. πŸ”₯

πŸ”₯ SEE ALSO πŸ”₯

Okay so the SEE ALSO section is literally a whole friend group of functions. Here's the squad:

Kernel file ./drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
t4_wait_op_done_val(9), t4_set_reg_field(9), t4_read_indirect(9),
t4_write_indirect(9), t4_record_mbox(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_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)

And that's the whole page, bestie! This was from the Kernel API Manual, sourced from ./drivers/net/ethernet/chelsio/cxgb4/t4_hw.c, dated October 2026. Stay slaying! 🫢✨

πŸ“¦ where this page comes from