e1000_disable_ulp_lpt_lp(9)
π e1000_disable_ulp_lpt_lp(9) β like, the Kernel API Manual one π
okay bestie, so this is a page from the Kernel API Manual, and it's about one very specific little function that turns off Ultra Low Power mode for LynxPoint-LP. yes it's niche. yes it's iconic. let's go β¨
πΈ NAME πΈ
e1000_disable_ulp_lpt_lp β literally the function that un-configures Ultra Low Power mode for LynxPoint-LP. that's the whole vibe. π¦
π SYNOPSIS π
s32 e1000_disable_ulp_lpt_lp (struct e1000_hw *hw , bool force );
like, it takes two things and hands you back an s32. simple. elegant. periodt. π
β¨ ARGUMENTS β¨
hwβ pointer to the HW structure, aka the whole hardware situation, handed to you by reference π«Άforceβ boolean indicating whether or not to force disabling ULP. yes it's a yes/no. yes it changes everything. π
π₯ DESCRIPTION π₯
so the way this works is β e1000_disable_ulp_lpt_lp un-configures ULP mode in three scenarios, and no cap, all three matter:
- when the link is up
- when the system is transitioned from Sx
- when the driver is unloaded
and then here's where it splits, and this part is so important:
if you're on a Manageability Engine (ME) enabled system, it polls for an indication from ME that ULP has been un-configured. like, it waits for ME to text back "done π ". if you are not on an ME enabled system, it just un-configures the ULP mode by software. same goal, different lane. β¨
during nominal operation, this function is called when link is acquired to disable ULP mode, and that's the force=false case π
otherwise β for example when unloading the driver or during Sx->S0 transitions β it's called with force=true to forcibly disable ULP. yes, forcibly. it's giving main character energy tbh π
ngl, keep theforcevalue straight in your head bestie βfalsefor the normal "link just came up" moment,truefor the unload / Sx->S0 situations. the function does different things, so this is not a detail you skim. π
π SEE ALSO π
okay so this is the part where the page just... lists everyone in the friend group π«Ά. the source lives in the kernel file:
./drivers/net/ethernet/intel/e1000e/ich8lan.c
and here's the full squad, fr fr β every single one of them:
e1000_phy_is_accessible_pchlan(9),e1000_toggle_lanphypc_pch_lpt(9),e1000_reconfigure_k1_params(9)e1000_init_phy_workarounds_pchlan(9),e1000_init_phy_params_pchlan(9),e1000_init_phy_params_ich8lan(9),e1000_init_nvm_params_ich8lan(9),e1000_init_mac_params_ich8lan(9)__e1000_access_emi_reg_locked(9),e1000_read_emi_reg_locked(9),e1000_write_emi_reg_locked(9)e1000_set_eee_pchlan(9),e1000_k1_workaround_lpt_lp(9),e1000_platform_pm_pch_lpt(9)e1000e_force_smbus(9),e1000_enable_ulp_lpt_lp(9)β yeah, the enable one is right there, they're a matched set πe1000_check_for_copper_link_ich8lan(9)e1000_acquire_nvm_ich8lan(9),e1000_release_nvm_ich8lan(9),e1000_acquire_swflag_ich8lan(9),e1000_release_swflag_ich8lan(9)e1000_check_mng_mode_ich8lan(9),e1000_check_mng_mode_pchlan(9)e1000_rar_set_pch2lan(9),e1000_rar_get_count_pch_lpt(9),e1000_rar_set_pch_lpt(9)e1000_check_reset_block_ich8lan(9),e1000_write_smbus_addr(9),e1000_sw_lcd_config_ich8lan(9)e1000_k1_gig_workaround_hv(9),e1000_configure_k1_ich8lan(9),e1000_oem_bits_config_ich8lan(9),e1000_set_mdio_slow_mode_hv(9)e1000_hv_phy_workarounds_ich8lan(9),e1000_copy_rx_addrs_to_phy_ich8lan(9)e1000_lv_jumbo_workaround_ich8lan(9),e1000_lv_phy_workarounds_ich8lan(9),e1000_k1_workaround_lv(9)e1000_gate_hw_phy_config_ich8lan(9),e1000_lan_init_done_ich8lan(9),e1000_post_phy_reset_ich8lan(9),e1000_phy_hw_reset_ich8lan(9)e1000_set_lplu_state_pchlan(9),e1000_set_d0_lplu_state_ich8lan(9),e1000_set_d3_lplu_state_ich8lan(9)e1000_valid_nvm_bank_detect_ich8lan(9),e1000_read_nvm_spt(9),e1000_read_nvm_ich8lan(9)e1000_flash_cycle_init_ich8lan(9),e1000_flash_cycle_ich8lan(9)e1000_read_flash_dword_ich8lan(9),e1000_read_flash_word_ich8lan(9),e1000_read_flash_byte_ich8lan(9),e1000_read_flash_data_ich8lan(9),e1000_read_flash_data32_ich8lan(9)e1000_write_nvm_ich8lan(9),e1000_update_nvm_checksum_spt(9),e1000_update_nvm_checksum_ich8lan(9),e1000_validate_nvm_checksum_ich8lan(9)e1000e_write_protect_nvm_ich8lan(9),e1000_write_flash_data_ich8lan(9),e1000_write_flash_data32_ich8lan(9),e1000_write_flash_byte_ich8lan(9)e1000_retry_write_flash_dword_ich8lan(9),e1000_retry_write_flash_byte_ich8lan(9),e1000_erase_flash_bank_ich8lan(9)e1000_valid_led_default_ich8lan(9),e1000_id_led_init_pchlan(9),e1000_get_bus_info_ich8lan(9)e1000_reset_hw_ich8lan(9),e1000_init_hw_ich8lan(9),e1000_initialize_hw_bits_ich8lan(9)e1000_setup_link_ich8lan(9),e1000_setup_copper_link_ich8lan(9),e1000_setup_copper_link_pch_lpt(9),e1000_get_link_up_info_ich8lan(9)e1000_kmrn_lock_loss_workaround_ich8lan(9),e1000e_set_kmrn_lock_loss_workaround_ich8lan(9)e1000e_igp3_phy_powerdown_workaround_ich8lan(9),e1000e_gig_downshift_workaround_ich8lan(9)e1000_suspend_workarounds_ich8lan(9),e1000_resume_workarounds_pchlan(9)e1000_cleanup_led_ich8lan(9),e1000_led_on_ich8lan(9),e1000_led_off_ich8lan(9)e1000_setup_led_pchlan(9),e1000_cleanup_led_pchlan(9),e1000_led_on_pchlan(9),e1000_led_off_pchlan(9)e1000_get_cfg_done_ich8lan(9),e1000_power_down_phy_copper_ich8lan(9),e1000_clear_hw_cntrs_ich8lan(9)
like, that's the whole extended universe bestie, we don't gatekeep here ππΈ
and that's the page!! π§ source on this one is ./drivers/net/ethernet/intel/e... (yes it's abbreviated in the footer, that's just how it is, no cap) and the date on it is October 2026 β so whenever you're reading this, hi from the future, mwah π slay, go disable that ULP π
π¦ 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