e1000_init_hw_struct(9)
π e1000_init_hw_struct(9) β like, the kernel API manual, but make it make sense
okay so bestie, welcome to e1000_init_hw_struct(9) from the Kernel API Manual β¨ section 9, dev-kernel girlies rise up π«Ά this is the one that gets the e1000 hw struct all cute and set up before anything else happens.
πΈ NAME πΈ
e1000_init_hw_struct β literally initializes the members of the hw struct π
β¨ SYNOPSIS β¨
int e1000_init_hw_struct (struct e1000_adapter *adapter , struct
e1000_hw *hw );
like yeah, two args, one int return, that's the whole vibe π
π― ARGUMENTS π―
adapterβ the board private struct, she's the main character holding all the board-specific lore πhwβ the structure thate1000_hw.cuses, iykyk π
π¦ DESCRIPTION π¦
so the whole point of this function is that it factors out the initialization of the e1000_hw struct into its very own function, which means you can call it super duper early at init time β like, right after the struct allocation, before the struct has even picked out an outfit π
the fields get initialized based on PCI device information and on OS network device settings (that's the MTU size, bestie, not the makeup setting π).
and if the MAC type setup fails? it returns negative error codes. not zero, not happy, negative. so likeβ¦ check your return value fr fr π
no cap: if MAC type setup goes sideways, this thing comes back with a negative error code. handle it, don't ignore it, periodt.
π₯ SEE ALSO π₯
the kernel file in question is ./drivers/net/ethernet/intel/e1000/e1000_main.c β go read the source, it's giving lore drop π
and here's the whole friend group, everyone's invited, all (9) girlies π:
e1000_get_hw_dev(9)e1000_init_module(9)e1000_exit_module(9)e1000_irq_disable(9)e1000_irq_enable(9)e1000_configure(9)e1000_power_up_phy(9)e1000_is_need_ioport(9)e1000_probe(9)e1000_remove(9)e1000_sw_init(9)e1000_alloc_queues(9)e1000_open(9)e1000_close(9)e1000_check_64k_bound(9)e1000_setup_tx_resources(9)e1000_setup_all_tx_resources(9)e1000_configure_tx(9)e1000_setup_rx_resources(9)e1000_setup_all_rx_resources(9)e1000_setup_rctl(9)e1000_configure_rx(9)e1000_free_tx_resources(9)e1000_free_all_tx_resources(9)e1000_clean_tx_ring(9)e1000_clean_all_tx_rings(9)e1000_free_rx_resources(9)e1000_free_all_rx_resources(9)e1000_clean_rx_ring(9)e1000_clean_all_rx_rings(9)e1000_set_mac(9)e1000_set_rx_mode(9)e1000_update_phy_info_task(9)e1000_82547_tx_fifo_stall_task(9)e1000_watchdog(9)e1000_update_itr(9)e1000_tx_timeout(9)e1000_change_mtu(9)e1000_update_stats(9)e1000_intr(9)e1000_clean(9)e1000_clean_tx_irq(9)e1000_rx_checksum(9)e1000_consume_page(9)e1000_receive_skb(9)e1000_tbi_adjust_stats(9)e1000_clean_jumbo_rx_irq(9)e1000_clean_rx_irq(9)e1000_alloc_jumbo_rx_buffers(9)e1000_alloc_rx_buffers(9)e1000_smartspeed(9)e1000_ioctl(9)e1000_mii_ioctl(9)e1000_io_error_detected(9)e1000_io_slot_reset(9)e1000_io_resume(9)
π and that's the page, bestie! π
cute little sign-off before you go: the footer says the source path is ./drivers/net/ethernet/intel/e... (yes it's literally truncated like that in the footer, iconique π), dated October 2026, and the page is e1000_init_hw_struct(9). slay, go init that hw struct ππ¦
π¦ 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