e1000_check_polarity(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… e1000_check_polarity β€” nope, we're checking the cable polarity, bestie

okay so welcome to the e1000_check_polarity(9) page from the Kernel API Manual, aka the little function that looks at your cable and goes "hmm, is u reversed or not." sit down, we're doing this together 🫢


✨ SYNOPSIS ✨

s32 e1000_check_polarity (struct e1000_hw *hw , e1000_rev_polarity
*polarity );

that's literally it. two args, one return, zero drama. periodt.


πŸŽ€ ARGUMENTS πŸŽ€

  • hw β€” the struct with all the variables the shared code pokes at. it's giving "everything bagel" of driver state πŸ’–
  • polarity β€” this one's an output parameter, so it comes back filled in:
    • 0 β€” polarity is not reversed
    • 1 β€” polarity is reversed πŸ™ˆ

πŸ”₯ RETURN πŸ”₯

  • E1000_ERR_XXX
  • E1000_SUCCESS

both of those, that's the list, no cap. ⭐


🌸 DESCRIPTION 🌸

so here's the tea β˜• β€” the logic branches by phy generation, and the vibes differ:

  • for phy's older than IGP, this function simply reads the polarity bit in the Phy Status register. easy. iconic. one read and done ✨
  • for IGP phy's, that bit is only valid when the link speed is 10 Mbps. iykyk.
  • if the link speed is 100 Mbps β€” there is no polarity, so this bit will return 0. it's not broken, there's just nothing to report πŸ’€
  • if the link speed is 1000 Mbps β€” the polarity status lives in IGP01E1000_PHY_PCS_INIT_REG instead. different register, same mission πŸ‘‘

πŸ¦‹ SEE ALSO πŸ¦‹

kernel file ./drivers/net/ethernet/intel/e1000/e1000_hw.c β€” and honestly the whole friend group:

e1000_set_phy_type(9), e1000_phy_init_script(9), e1000_set_mac_type(9), e1000_set_media_type(9), e1000_reset_hw(9), e1000_init_hw(9), e1000_adjust_serdes_amplitude(9), e1000_setup_link(9), e1000_setup_fiber_serdes_link(9), e1000_copper_link_rtl_setup(9), e1000_copper_link_preconfig(9), e1000_copper_link_igp_setup(9), e1000_copper_link_mgp_setup(9), e1000_copper_link_autoneg(9), e1000_copper_link_postconfig(9), e1000_setup_copper_link(9), e1000_phy_setup_autoneg(9), e1000_phy_force_speed_duplex(9), e1000_config_collision_dist(9), e1000_config_mac_to_phy(9), e1000_force_mac_fc(9), e1000_config_fc_after_link_up(9), e1000_check_for_serdes_link_generic(9), e1000_check_for_link(9), e1000_get_speed_and_duplex(9), e1000_wait_autoneg(9), e1000_raise_mdi_clk(9), e1000_lower_mdi_clk(9), e1000_shift_out_mdi_bits(9), e1000_shift_in_mdi_bits(9), e1000_read_phy_reg(9), e1000_write_phy_reg(9), e1000_phy_hw_reset(9), e1000_phy_reset(9), e1000_detect_gig_phy(9), e1000_phy_reset_dsp(9), e1000_phy_igp_get_info(9), e1000_phy_m88_get_info(9), e1000_phy_get_info(9), e1000_init_eeprom_params(9), e1000_raise_ee_clk(9), e1000_lower_ee_clk(9), e1000_shift_out_ee_bits(9), e1000_shift_in_ee_bits(9), e1000_acquire_eeprom(9), e1000_standby_eeprom(9), e1000_release_eeprom(9), e1000_spi_eeprom_ready(9), e1000_read_eeprom(9), e1000_validate_eeprom_checksum(9), e1000_update_eeprom_checksum(9), e1000_write_eeprom(9), e1000_write_eeprom_spi(9), e1000_write_eeprom_microwire(9), e1000_read_mac_addr(9), e1000_init_rx_addrs(9), e1000_hash_mc_addr(9), e1000_rar_set(9), e1000_write_vfta(9), e1000_clear_vfta(9), e1000_setup_led(9), e1000_cleanup_led(9), e1000_led_on(9), e1000_led_off(9), e1000_clear_hw_cntrs(9), e1000_reset_adaptive(9), e1000_update_adaptive(9), e1000_get_bus_info(9), e1000_write_reg_io(9), e1000_get_cable_length(9), e1000_check_downshift(9), e1000_config_dsp_after_link_change(9), e1000_set_phy_mode(9), e1000_set_d3_lplu_state(9), e1000_set_vco_speed(9), e1000_enable_mng_pass_thru(9), e1000_get_auto_rd_done(9), e1000_get_phy_cfg_done(9)

go read them all, i'll wait πŸ’œ


that's the whole page, bestie β€” no crumbs left. this edition came from ./drivers/net/ethernet/intel/e... and it's dated October 2026, so like, keep that in mind. mwah, love u, go check some polarity πŸŒˆπŸŽ€πŸ’…

πŸ“¦ where this page comes from