t3_set_phy_speed_duplex(9)
π
t3_set_phy_speed_duplex β the Kernel API Manual page, bestie edition β¨
okay so. welcome to the Kernel API Manual, and today's main character is t3_set_phy_speed_duplex. yes it's a mouthful, no we're not abbreviating it, it ate and left no crumbs π
πΈ NAME πΈ
t3_set_phy_speed_duplex β literally just force the PHY's speed and duplex. no negotiation, no vibes, no "hmm let me think about it". you pick, it does. periodt π
β¨ SYNOPSIS β¨
int t3_set_phy_speed_duplex (struct cphy *phy , int speed , int duplex
);
she returns an int, she takes three things, she's iconic, that's the whole story π«Ά
π ARGUMENTS π
phyβ the PHY we're operating on. the one getting the glow-up. your girl. πspeedβ the requested PHY speed. you say it, she slays it.duplexβ the requested PHY duplex. the other half of the requested duo, iykyk.
π₯ DESCRIPTION π₯
so what she does is: force a 10/100/1000 PHY's speed and duplex. like, no discussion, we're locking it in πβ¨
and the way that this also disables auto-negotiation β except for GigE, where auto-negotiation is mandatory. and bestie when I say mandatory I mean mandatory, there's no "pretty please" clause, that's just how GigE rolls π
ngl this is a "you asked for it" kind of function. you're overriding what the hardware would've figured out on its own, so likeβ¦ be sure? π
π SEE ALSO π
first up, the kernel file this lives in: ./drivers/net/ethernet/chelsio/cxgb3/t3_hw.c
and then the whole extended friend group, alphabetically-ish, all of them deserving of their own little moment (9):
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_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_link_start(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)
likeβ¦ the roster is stacked π§ no cap, go read a few, they're all slay in their own way π
okay that's the whole page, you're officially educated πβ¨ this little gem is from ./drivers/net/ethernet/chelsio..., dated October 2026, and it lives in the Kernel API Manual β go forth and force some speed and duplex, bestie, and remember: GigE keeps its auto-negotiation, that's just the rules π
ππΈ
π¦ 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