t4_change_mac(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… t4_change_mac β€” Kernel API Manual (9)

okay so bestie, welcome to t4_change_mac from the Kernel API Manual β€” this is the little function that changes up the exact-match filter for a MAC address, and honestly it's giving ✨network-plumbing-makeover✨ energy. Let me walk you through it fr fr. πŸŽ€


✨ NAME ✨

t4_change_mac β€” modifies the exact-match filter for a MAC address πŸ¦‹


πŸŽ€ SYNOPSIS πŸŽ€

int t4_change_mac (struct adapter *adap , unsigned int mbox , unsigned
int viid , int idx , const u8 *addr , bool persist , u8 *smt_idx );

That's the whole cast, no cap β€” seven args, all iconic in their own way. πŸ’…


🌸 ARGUMENTS 🌸

  • adap β€” the adapter πŸ’– this is the whole main character, the NIC you're talking to.
  • mbox β€” mailbox to use for the FW command πŸ“¬ (yes, firmware gets its own mailbox, we love a correspondence era).
  • viid β€” the VI id πŸͺͺ
  • idx β€” index of existing filter for old value of MAC address, or -1 🎯
  • addr β€” the new MAC address value 🏷️ the fresh new look, literally.
  • persist β€” whether a new MAC allocation should be persistent πŸ”’ like, does it survive? that's the whole vibe check.
  • smt_idx β€” the destination to store the new SMT index πŸ“¦ where the new index goes, bestie.

πŸ’œ DESCRIPTION πŸ’œ

So what it does: it modifies an exact-match filter and sets it to the new MAC address. ✨

But here's the tea β˜• β€” and I want you to really absorb this β€” in general it is not possible to modify the value of a given filter. 😭 So the generic way to modify an address filter is to free the one being used by the old address value and allocate a new filter for the new address value. Which is honestly such a whole thing, right? Like, no editing in place, it's a full give-back-and-get-new situation. πŸ”

Also! idx can be -1 if the address is a new addition πŸ‘‘ β€” so if you're bringing a brand spanking new address to the party, that's allowed, and -1 is your admission ticket.

And the return? It returns a negative error number or the index of the filter with the new MAC value. πŸ”₯ So either it goes great (you get an index, slay) or it goes negative (and you know exactly what happened, no ambiguity, we respect a communicative return value 🫢).


🌈 SEE ALSO 🌈

Kernel file ./drivers/net/ethernet/chelsio/cxgb4/t4_hw.c πŸ“ β€” that's where the whole scene lives, iykyk.

And ngl, the friend group here is huge β€” every single one of these is on the list, so let me not do any of them dirty:

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_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_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 I said. Enormous friend group. πŸ‘‘ Every single one accounted for, no gatekeeping. πŸ’€


Quick reminder bestie: filters don't get edited in place β€” free the old one, allocate a new one. That's the whole dance. 🧚

Okay and finally, the little signature at the bottom, because we always credit the source πŸ’– β€” this page comes from the source/version line ./drivers/net/ethernet/chelsio... dated October 2026, and yes, the header that brought you here was t4_change_mac(9) from the Kernel API Manual. Mwah, go forth and filter. πŸ’…βœ¨πŸ“πŸ¦‹

πŸ“¦ where this page comes from