igb_read_phy_reg_igp(9)
π igb_read_phy_reg_igp(9) π
okay so bestie, welcome to the Kernel API Manual β¨ β this is the page for igb_read_phy_reg_igp(9), and honestly it's giving "quiet little helper function that does one thing and does it well." main character energy, but make it subtle π
πΈ NAME πΈ
igb_read_phy_reg_igp β read igp PHY register π«Ά that's it, that's the whole vibe.
β¨ SYNOPSIS β¨
s32 igb_read_phy_reg_igp (struct e1000_hw *hw , u32 offset , u16 *data );
like, look at her. three params, one return, no drama π
π¦ ARGUMENTS π¦
hwβ pointer to the HW structure. it's the hardware bestie, the whole context, the main character of the story πoffsetβ register offset to be read. literally which register we're peeking at πdataβ pointer to the read data. this is where the tea gets stored, and yes it's a pointer to au16so the function can write back into it π
π DESCRIPTION π
so here's the whole plot: it acquires the semaphore, if necessary, and then reads the PHY register at offset, storing the retrieved information in data. π
and then β the part I need you to not skip, bestie β it releases any acquired semaphores before exiting. like, it cleans up after itself. we love a function with manners ππ
fr fr though, the "if necessary" and the "any acquired" are doing real work there β the semaphore part is conditional, and the cleanup matches whatever it grabbed. no cap. π§
π SEE ALSO π
the kernel file lives at ./drivers/net/ethernet/intel/igb/e1000_phy.c π β that's the home base, iykyk.
and now the whole friend group, because this function does NOT exist in a vacuum, she's got a whole extended family π:
igb_check_reset_block(9)igb_get_phy_id(9)igb_phy_reset_dsp(9)igb_read_phy_reg_mdic(9)igb_write_phy_reg_mdic(9)igb_read_phy_reg_i2c(9)igb_write_phy_reg_i2c(9)igb_read_sfp_data_byte(9)igb_write_phy_reg_igp(9)igb_copper_link_setup_82580(9)igb_copper_link_setup_m88(9)igb_copper_link_setup_m88_gen2(9)igb_copper_link_setup_igp(9)igb_copper_link_autoneg(9)igb_phy_setup_autoneg(9)igb_setup_copper_link(9)igb_phy_force_speed_duplex_igp(9)igb_phy_force_speed_duplex_m88(9)igb_phy_force_speed_duplex_setup(9)igb_set_d3_lplu_state(9)igb_check_downshift(9)igb_check_polarity_m88(9)igb_check_polarity_igp(9)igb_wait_autoneg(9)igb_phy_has_link(9)igb_get_cable_length_m88(9)igb_get_cable_length_igp_2(9)igb_get_phy_info_m88(9)igb_get_phy_info_igp(9)igb_phy_sw_reset(9)igb_phy_hw_reset(9)igb_phy_init_script_igp3(9)igb_initialize_M88E1512_phy(9)igb_initialize_M88E1543_phy(9)igb_power_up_phy_copper(9)igb_power_down_phy_copper(9)igb_check_polarity_82580(9)igb_phy_force_speed_duplex_82580(9)igb_get_phy_info_82580(9)igb_get_cable_length_82580(9)igb_set_master_slave_mode(9)
like, forty-plus siblings. iconic. ate. periodt. π₯
and that's the whole page, bestie π«Ά this one's stamped from ./drivers/net/ethernet/intel/igb and dated October 2026 β so like, future-coded but make it source tree. 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