ixgbe_check_phy_link_tnx(9)
πΈ ixgbe_check_phy_link_tnx(9) β like, the Kernel API Manual page, bestie π
okay so picture this: you're deep in the ixgbe driver, you've got a PHY staring back at you, and you just need to know if the link is up and how fast it's going. That's literally this function. Welcome to the Kernel API Manual entry for ixgbe_check_phy_link_tnx β buckle up, she's short but she's iconic β¨
β¨ NAME β¨
ixgbe_check_phy_link_tnx β the little function whose whole personality is "determine link and speed status" π ngl that's the whole job and she does it well.
π¦ SYNOPSIS π¦
int ixgbe_check_phy_link_tnx (struct ixgbe_hw *hw , ixgbe_link_speed
*speed , bool *link_up );
like, yes, it returns an int, and yes, it takes three args. the vibes are immaculate, the signature is non-negotiable π
π«Ά ARGUMENTS π«Ά
hwβ pointer to hardware structure π» that's your ride-or-die hardware struct, she goes in first.speedβ link speed ποΈ this is where the speed lands, so it can tell you what's what.link_upβ status of link π is she up or is she not, that's the question, and this is where the answer goes.
π DESCRIPTION π
okay so the tea β: it reads the VS1 register to determine if the link is up and the current speed for the PHY. that's it, that's the whole plot. reads VS1, tells you link status, tells you speed, main character energy only π₯ no cap, no extra steps, no side quests.
lowkey obsessed with how straightforward this is. read one register, get two answers. efficiency queen π
π SEE ALSO π
buckle in bestie, this list is LONG and she ate every single time π the kernel file lives at ./drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c, and then we've got the whole extended friend group:
ixgbe_out_i2c_byte_ack(9)ixgbe_in_i2c_byte_ack(9)ixgbe_ones_comp_byte_add(9)ixgbe_read_i2c_combined_generic_int(9)ixgbe_write_i2c_combined_generic_int(9)ixgbe_probe_phy(9)ixgbe_identify_phy_generic(9)ixgbe_check_reset_blocked(9)ixgbe_get_phy_id(9)ixgbe_get_phy_type_from_id(9)ixgbe_reset_phy_generic(9)ixgbe_read_phy_reg_mdi(9)ixgbe_read_phy_reg_generic(9)ixgbe_write_phy_reg_mdi(9)ixgbe_write_phy_reg_generic(9)ixgbe_msca_cmd(9)ixgbe_mii_bus_read_generic_c22(9)ixgbe_mii_bus_read_generic_c45(9)ixgbe_mii_bus_write_generic_c22(9)ixgbe_mii_bus_write_generic_c45(9)ixgbe_mii_bus_read_c22(9)ixgbe_mii_bus_read_c45(9)ixgbe_mii_bus_write_c22(9)ixgbe_mii_bus_write_c45(9)ixgbe_x550em_a_mii_bus_read_c22(9)ixgbe_x550em_a_mii_bus_read_c45(9)ixgbe_x550em_a_mii_bus_write_c22(9)ixgbe_x550em_a_mii_bus_write_c45(9)ixgbe_get_first_secondary_devfn(9)ixgbe_x550em_a_has_mii(9)ixgbe_mii_bus_init(9)ixgbe_setup_phy_link_generic(9)ixgbe_setup_phy_link_speed_generic(9)ixgbe_get_copper_speeds_supported(9)ixgbe_get_copper_link_capabilities_generic(9)ixgbe_setup_phy_link_tnx(9)ixgbe_reset_phy_nl(9)ixgbe_identify_module_generic(9)ixgbe_identify_sfp_module_generic(9)ixgbe_identify_qsfp_module_generic(9)ixgbe_get_sfp_init_sequence_offsets(9)ixgbe_read_i2c_eeprom_generic(9)ixgbe_read_i2c_sff8472_generic(9)ixgbe_write_i2c_eeprom_generic(9)ixgbe_is_sfp_probe(9)ixgbe_read_i2c_byte_generic_int(9)ixgbe_read_i2c_byte_generic(9)ixgbe_read_i2c_byte_generic_unlocked(9)ixgbe_write_i2c_byte_generic_int(9)ixgbe_write_i2c_byte_generic(9)ixgbe_write_i2c_byte_generic_unlocked(9)ixgbe_i2c_start(9)ixgbe_i2c_stop(9)ixgbe_clock_in_i2c_byte(9)ixgbe_clock_out_i2c_byte(9)ixgbe_get_i2c_ack(9)ixgbe_clock_in_i2c_bit(9)ixgbe_clock_out_i2c_bit(9)ixgbe_raise_i2c_clk(9)ixgbe_lower_i2c_clk(9)ixgbe_set_i2c_data(9)ixgbe_get_i2c_data(9)ixgbe_i2c_bus_clear(9)ixgbe_tn_check_overtemp(9)
like, that's the whole group chat and every single one of them is invited π«Ά iykyk π
and that's the page!! source/version situation: ./drivers/net/ethernet/intel/i..., dated October 2026, and the whole thing is filed under ixgbe_check_phy_link_tnx(9). slay, go read your VS1 register, 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