igb_phy_forc...d_duplex_igp(9)
π igb_phy_forc...d_duplex_igp(9) π
okay so this is from the Kernel API Manual bestie, and the vibes are immaculate but the name is LONG so they had to squish it. let's get into it π«Ά
β¨ NAME β¨
igb_phy_force_speed_duplex_igp β it forces speed/duplex for the igp PHY. that's the whole thing. it's giving "no thoughts, just force" and honestly? iconic π
πΈ SYNOPSIS πΈ
s32 igb_phy_force_speed_duplex_igp (struct e1000_hw *hw );
like yes we return an s32 and yes she takes exactly one argument, so clean, so minimal, main character energy fr fr β¨
π ARGUMENTS π
hwβ pointer to the HW structure. that's it. that's the whole argument list. she walks in with herstruct e1000_hw *and gets to work π
π¦ DESCRIPTION π¦
so what she actually DOES is β she calls the PHY setup function to force speed and duplex. like, forcing it. not asking nicely. no negotiations. periodt π₯
then she clears the auto-crossover to force MDI manually, because sometimes you just gotta take the wheel and pick the thing yourself, y'know? no cap π
after that she waits for link, and returns successful if link up is successful. otherwise? it's -E1000_ERR_PHY which is literally (-2). so if you see a -2 come back, that's your girl saying "nope, no link" ππ
lowkey the ordering matters here β the wait comes after the forcing, and the error only shows up when link-up didn't work. don't @ me, that's just what the page says π§
π SEE ALSO π
she runs with a whole squad, okay, like a full group chat of igb functions β here's everyone invited bestie:
Kernel file ./drivers/net/ethernet/intel/igb/e1000_phy.c
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_read_phy_reg_igp(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_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)
okay that's the whole entire page and yes i read all of them so you don't have to π
she lives at ./drivers/net/ethernet/intel/igb, dated October 2026, and this little manual moment was brought to you by the igb_phy_forc...d_duplex_igp(9) girlies. slay, stay connected, and may your link always come up πβ¨π¦
π¦ 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