__e1000_read_kmrn_reg(9)
π¦ __e1000_read_kmrn_reg β read a kumeran register π
okay so bestie, welcome to the kernel API manual for __e1000_read_kmrn_reg, straight out of the Kernel API Manual β¨. This is the little helper that goes and peeks at a kumeran register for you, no cap. Let's get into it π«Ά
β¨ NAME β¨
__e1000_read_kmrn_reg β read kumeran register π
πΈ SYNOPSIS πΈ
s32 __e1000_read_kmrn_reg (struct e1000_hw *hw , u32 offset , u16 *data , bool locked );
it's giving "four arguments, one job" and honestly? iconic π
π ARGUMENTS π
hwβ pointer to the HW structure. your main character struct fr fr, this is the hardware you're talking to πoffsetβ register offset to be read. literally which register you want, iykyk π₯dataβ pointer to the read data. this is where the answer lands, so bestie it better be valid πlockedβ semaphore has already been acquired or not. basically: have you already grabbed the lock, or do you need me to grab it π
π§ DESCRIPTION π§
okay so here's the vibe check on what this thing actually does π
It acquires the semaphore, if necessary β if necessary being the whole reason locked exists, so you're not out here double-locking like a menace π. Then it reads the PHY register at offset using the kumeran interface π¦.
The information it retrieved gets stored in data β that's the whole point of the pointer, bestie, so it has somewhere to put the goods π.
And then: release any acquired semaphores before exiting. not me stressing this β it has to clean up after itself before it leaves, periodt β¨. No semaphore left behind, no cap.
β SEE ALSO β
the source lives here, in the kernel file ./drivers/net/ethernet/intel/e1000e/phy.c π
and then there's... the friend group. the whole entire friend group. okay so gather round, this is the full guest list, every single one of them, in order π:
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), 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_cable_length_igp_2(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)
like I said. the whole friend group. every last one ate, no notes π
and yeah β that source path is the same kernel file the page footer points at (./drivers/net/ethernet/intel/e1000e/phy.c), that's not a typo, they're the same place π
mwah π that's the whole page bestie β brought to you by the Kernel API Manual (that's the source/version), dated October 2026, and signed off from ./drivers/net/ethernet/intel/e1000e/phy.c because that's where all the drama lives πΈ go read your kumeran register, you've got this πβ¨
π¦ 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