t3_link_start(9)
π t3_link_start β the glow-up ritual for your MAC/PHY β¨
okay bestie, so this one lives in the Kernel API Manual (section 9, kernel functions, iykyk), and it's literally the function that gives your port a whole makeover. it's called t3_link_start, and no cap, it's the one that applies link configuration to your MAC/PHY. π
β¨ SYNOPSIS β¨
int t3_link_start (struct cphy *phy , struct cmac *mac , struct link_config *lc );
three arguments, one int coming back at you. let's meet the cast. π«Ά
πΈ ARGUMENTS πΈ
phyβ the PHY you're setting up. this one's getting the full treatment. πmacβ the MAC you're setting up. it's not escaping the makeover either.lcβ the requested link configuration. basically the vision board for what this port should look like. π
π₯ DESCRIPTION π₯
so what does it actually do? it sets up a port's MAC and PHY according to a desired link configuration. that's the whole vibe. and it goes down in three little acts, in this exact order:
- π if the PHY can auto-negotiate, it first decides what to advertise, then enables/disables auto-negotiation as desired, and resets.
- π if the PHY does not auto-negotiate, it just resets it. simple. iconic. no notes.
- β if auto-negotiation is off, it sets the MAC to the proper speed/duplex/FC. otherwise it does that later, based on the outcome of auto-negotiation. so likeβ¦ we wait for the results before doing the glow-up reveal. periodt.
bestie read the order carefully β "first decide what to advertise" is doing real work in that first bullet. don't skip a step, it's giving choreography. π
π¦ SEE ALSO π¦
okay this list is long long, but every single one is here because they're the besties this function rolls with:
- Kernel file
./drivers/net/ethernet/chelsio/cxgb3/t3_hw.c
and the whole friend group, in order:
t3_wait_op_done_val(9), t3_write_regs(9), t3_set_reg_field(9), t3_read_indirect(9), t3_mc7_bd_read(9), t3_mdio_change_bits(9), t3_phy_reset(9), t3_phy_advertise(9), t3_phy_advertise_fiber(9), t3_set_phy_speed_duplex(9), t3_seeprom_wp(9), get_vpd_params(9), sf1_read(9), sf1_write(9), flash_wait_op(9), t3_read_flash(9), t3_write_flash(9), t3_get_tp_version(9), t3_check_tpsram_version(9), t3_check_tpsram(9), t3_get_fw_version(9), t3_check_fw_version(9), t3_flash_erase_sectors(9), t3_load_fw(9), t3_cim_ctl_blk_read(9), t3_link_changed(9), t3_set_vlan_accel(9), t3_handle_intr_status(9), t3_intr_enable(9), t3_intr_disable(9), t3_intr_clear(9), t3_port_intr_enable(9), t3_port_intr_disable(9), t3_port_intr_clear(9), t3_sge_write_context(9), clear_sge_ctxt(9), t3_sge_init_ecntxt(9), t3_sge_init_flcntxt(9), t3_sge_init_rspcntxt(9), t3_sge_init_cqcntxt(9), t3_sge_enable_ecntxt(9), t3_sge_disable_fl(9), t3_sge_disable_rspcntxt(9), t3_sge_disable_cqcntxt(9), t3_sge_cqcntxt_op(9), t3_config_rss(9), t3_tp_set_offload_mode(9), pm_num_pages(9), partition_mem(9), tp_set_timers(9), t3_tp_set_coalescing_size(9), t3_tp_set_max_rxsize(9), t3_load_mtus(9), t3_tp_get_mib_stats(9), t3_set_proto_sram(9), t3_config_sched(9), get_pci_mode(9), init_link_config(9), mc7_calc_size(9)
yeah. sixty-something names. she's popular. π
π that's the whole page, bestie π
this little love letter comes to you from ./drivers/net/ethernet/chelsio... and it's dated October 2026, all under the name t3_link_start(9). mwah. ππ§
π¦ 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