t3_link_start(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

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:

  1. 🌈 if the PHY can auto-negotiate, it first decides what to advertise, then enables/disables auto-negotiation as desired, and resets.
  2. πŸ’œ if the PHY does not auto-negotiate, it just resets it. simple. iconic. no notes.
  3. ⭐ 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