e1000e_get_...length_igp_2(9)
π¦ e1000e_get_cable_length_igp_2 β bestie edition
ok so you're in the Kernel API Manual and you clicked on e1000e_get_cable_length_igp_2(9)β¦ and honestly? taste. this one's a little baddie that figures out how long your cable is for the igp2 PHY. let's get into it π
β¨ NAME β¨
e1000e_get_cable_length_igp_2 β Determine cable length for igp2 PHY
like, literally what it says on the tin, no cap π
πΈ SYNOPSIS πΈ
s32 e1000e_get_cable_length_igp_2 (struct e1000_hw *hw );
she takes one thing and one thing only, and she returns an s32. periodt.
π ARGUMENTS π
hwβ pointer to the HW structure. that's it. that's the whole argument list. iconic behavior honestly π«Ά
π₯ DESCRIPTION π₯
okay so here's the vibe check π
the automatic gain control (agc) normalizes the amplitude of the received signal β which is a fancy way of saying it adjusts for the attenuation that the cable is out here producing. like the cable's just out there losing signal strength and the agc is like "not on my watch bestie" β¨
so by reading the AGC registers β and those registers represent the combination of coarse and fine gain value β the value can be put into a lookup table, and from that you get the approximate cable length for each channel. π
note that approximate is doing real work in that sentence. it's a lookup-table estimate, not a laser measurement. ngl, manage your expectations π
so yeah: read regs β lookup table β cable length per channel. slay.
π SEE ALSO π
the kernel file lives right here:
./drivers/net/ethernet/intel/e1000e/phy.c
and here's the whole friend group β every single one of these, no skipping, because they're all linked in the same little ecosystem π:
e1000e_check_reset_block_generic(9)e1000e_get_phy_id(9)e1000e_phy_reset_dsp(9)e1000e_read_phy_reg_mdic(9)e1000e_write_phy_reg_mdic(9)e1000e_read_phy_reg_m88(9)e1000e_write_phy_reg_m88(9)e1000_set_page_igp(9)__e1000e_read_phy_reg_igp(9)e1000e_read_phy_reg_igp(9)e1000e_read_phy_reg_igp_locked(9)__e1000e_write_phy_reg_igp(9)e1000e_write_phy_reg_igp(9)e1000e_write_phy_reg_igp_locked(9)__e1000_read_kmrn_reg(9)e1000e_read_kmrn_reg(9)e1000e_read_kmrn_reg_locked(9)__e1000_write_kmrn_reg(9)e1000e_write_kmrn_reg(9)e1000e_write_kmrn_reg_locked(9)e1000_set_master_slave_mode(9)e1000_copper_link_setup_82577(9)e1000e_copper_link_setup_m88(9)e1000e_copper_link_setup_igp(9)e1000_phy_setup_autoneg(9)e1000_copper_link_autoneg(9)e1000e_setup_copper_link(9)e1000e_phy_force_speed_duplex_igp(9)e1000e_phy_force_speed_duplex_m88(9)e1000_phy_force_speed_duplex_ife(9)e1000e_phy_force_speed_duplex_setup(9)e1000e_set_d3_lplu_state(9)e1000e_check_downshift(9)e1000_check_polarity_m88(9)e1000_check_polarity_igp(9)e1000_check_polarity_ife(9)e1000_wait_autoneg(9)e1000e_phy_has_link_generic(9)e1000e_get_cable_length_m88(9)e1000e_get_phy_info_m88(9)e1000e_get_phy_info_igp(9)e1000_get_phy_info_ife(9)e1000e_phy_sw_reset(9)e1000e_phy_hw_reset_generic(9)e1000e_get_cfg_done_generic(9)e1000e_phy_init_script_igp3(9)e1000e_get_phy_type_from_id(9)e1000e_determine_phy_address(9)e1000_get_phy_addr_for_bm_page(9)e1000e_write_phy_reg_bm(9)e1000e_read_phy_reg_bm(9)e1000e_read_phy_reg_bm2(9)e1000e_write_phy_reg_bm2(9)e1000_enable_phy_wakeup_reg_access_bm(9)e1000_disable_phy_wakeup_reg_access_bm(9)e1000_access_phy_wakeup_reg_bm(9)e1000_power_up_phy_copper(9)e1000_power_down_phy_copper(9)__e1000_read_phy_reg_hv(9)e1000_read_phy_reg_hv(9)e1000_read_phy_reg_hv_locked(9)e1000_read_phy_reg_page_hv(9)__e1000_write_phy_reg_hv(9)e1000_write_phy_reg_hv(9)e1000_write_phy_reg_hv_locked(9)e1000_write_phy_reg_page_hv(9)e1000_get_phy_addr_for_hv_page(9)e1000_access_phy_debug_regs_hv(9)e1000_link_stall_workaround_hv(9)e1000_check_polarity_82577(9)e1000_phy_force_speed_duplex_82577(9)e1000_get_phy_info_82577(9)e1000_get_cable_length_82577(9)
that's 69 of them. sixty-nine. i counted (i did not count, but wow look at that list π€‘). anyway, if you're doing PHY register stuff, one of these is your girl. iykyk π
π a lil sign-off π
this page came from ./drivers/net/ethernet/intel/e... and it's stamped October 2026 β so like, future vibes honestly β
anyway that's the whole page babe, go read your AGC registers responsibly and remember: the cable length is approximate. πβ¨π§
π¦ 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