i40e_init_shared_code(9)
β¨ i40e_init_shared_code(9) β¨
okay so bestie, you found a i40e_init_shared_code(9) page β that's a kernel API manpage, and honestly? it's kind of the "get ready with me" step for the whole i40e shared code. you set the vibe up before anything else happens. let's get into it π
π NAME π
i40e_init_shared_code β initialize the shared code π«Ά
πΈ SYNOPSIS πΈ
int i40e_init_shared_code (struct i40e_hw *hw );
π¦ ARGUMENTS π¦
hwβ pointer to hardware structure. yes, that's the main character right there π
π DESCRIPTION π
Okay so this function is the setup girlie β¨. It assigns the MAC type and PHY code, and it inits the NVM. And here's the thing β it does not touch the hardware. Not even a little. no cap. π«
This function must be called prior to any other function in the shared code. Like, it's the first domino, the opening number, the pre-game. If you skip it, everything after it is gonna have a bad time. π
Also important β the i40e_hw structure should be memset to 0 prior to calling this function. Zero it out, bestie, clean slate, fresh start π§.
And the following fields in the hw structure should be filled in prior to calling this function: hw_addr, back, device_id, vendor_id, subsystem_device_id, subsystem_vendor_id, and revision_id. Fill those in first, then call. it's giving "pack your bag before you leave" π
π₯ SEE ALSO π₯
Kernel file ./drivers/net/ethernet/intel/i40e/i40e_common.c
and the whole friend group, fr fr:
i40e_set_mac_type(9),i40e_debug_aq(9),i40e_check_asq_alive(9),i40e_aq_queue_shutdown(9),i40e_aq_get_set_rss_lut(9),i40e_aq_get_rss_lut(9),i40e_aq_set_rss_lut(9),i40e_aq_get_set_rss_key(9),i40e_aq_get_rss_key(9),i40e_aq_set_rss_key(9),i40e_aq_mac_address_read(9),i40e_aq_mac_address_write(9),i40e_get_mac_addr(9),i40e_get_port_mac_addr(9),i40e_pre_tx_queue_cfg(9),i40e_get_pba_string(9),i40e_get_media_type(9),i40e_poll_globr(9),i40e_pf_reset(9),i40e_clear_hw(9),i40e_clear_pxe_mode(9),i40e_led_is_mine(9),i40e_led_get(9),i40e_led_set(9),i40e_aq_get_phy_capabilities(9),i40e_aq_set_phy_config(9),i40e_set_fc(9),i40e_aq_set_mac_config(9),i40e_aq_clear_pxe_mode(9),i40e_aq_set_link_restart_an(9),i40e_aq_get_link_info(9),i40e_aq_set_phy_int_mask(9),i40e_aq_set_mac_loopback(9),i40e_aq_set_phy_debug(9),i40e_aq_add_vsi(9),i40e_aq_set_default_vsi(9),i40e_aq_clear_default_vsi(9),i40e_aq_set_vsi_unicast_promiscuous(9),i40e_aq_set_vsi_multicast_promiscuous(9),i40e_aq_set_vsi_mc_promisc_on_vlan(9),i40e_aq_set_vsi_uc_promisc_on_vlan(9),i40e_aq_set_vsi_bc_promisc_on_vlan(9),i40e_aq_set_vsi_broadcast(9),i40e_aq_get_vsi_params(9),i40e_aq_update_vsi_params(9),i40e_aq_get_switch_config(9),i40e_aq_set_switch_config(9),i40e_aq_get_firmware_version(9),i40e_aq_send_driver_version(9),i40e_get_link_status(9),i40e_update_link_info(9),i40e_aq_add_veb(9),i40e_aq_get_veb_parameters(9),i40e_prepare_add_macvlan(9),i40e_aq_add_macvlan(9),i40e_aq_add_macvlan_v2(9),i40e_aq_remove_macvlan(9),i40e_aq_remove_macvlan_v2(9),i40e_aq_send_msg_to_vf(9),i40e_aq_debug_read_register(9),i40e_aq_debug_write_register(9),i40e_aq_request_resource(9),i40e_aq_release_resource(9),i40e_aq_read_nvm(9),i40e_aq_erase_nvm(9),i40e_parse_discover_capabilities(9),i40e_aq_discover_capabilities(9),i40e_aq_update_nvm(9),i40e_aq_get_lldp_mib(9),i40e_aq_set_lldp_mib(9),i40e_aq_cfg_lldp_mib_change_event(9),i40e_aq_stop_lldp(9),i40e_aq_start_lldp(9),i40e_aq_set_dcb_parameters(9),i40e_aq_get_cee_dcb_config(9),i40e_aq_add_udp_tunnel(9),i40e_aq_del_udp_tunnel(9),i40e_aq_delete_element(9),i40e_aq_dcb_updated(9),i40e_aq_tx_sched_cmd(9),i40e_aq_config_vsi_bw_limit(9),i40e_aq_config_vsi_tc_bw(9),i40e_aq_config_switch_comp_ets(9),i40e_aq_config_switch_comp_bw_config(9),i40e_aq_query_vsi_bw_config(9),i40e_aq_query_vsi_ets_sla_config(9),i40e_aq_query_switch_comp_ets_config(9),i40e_aq_query_port_ets_config(9),i40e_aq_query_switch_comp_bw_config(9),i40e_validate_filter_settings(9),i40e_set_filter_control(9),i40e_aq_add_rem_control_packet_filter(9),i40e_add_filter_to_drop_tx_flow_control_frames(9),i40e_aq_alternate_read(9),i40e_aq_suspend_port_tx(9),i40e_aq_resume_port_tx(9),i40e_set_pci_config_data(9),i40e_aq_debug_dump(9),i40e_read_bw_from_alt_ram(9),i40e_aq_configure_partition_bw(9),i40e_read_phy_register_clause22(9),i40e_write_phy_register_clause22(9),i40e_read_phy_register_clause45(9),i40e_write_phy_register_clause45(9),i40e_get_phy_address(9),i40e_led_get_reg(9),i40e_led_set_reg(9),i40e_led_get_phy(9),i40e_led_set_phy(9),i40e_aq_rx_ctl_read_register(9),i40e_read_rx_ctl(9),i40e_aq_rx_ctl_write_register(9),i40e_write_rx_ctl(9),i40e_mdio_if_number_selection(9),i40e_aq_set_phy_register_ext(9),i40e_aq_get_phy_register_ext(9),i40e_aq_write_ddp(9),i40e_aq_get_ddp_list(9),i40e_find_segment_in_package(9),i40e_ddp_exec_aq_section(9),i40e_validate_profile(9),i40e_write_profile(9),i40e_rollback_profile(9),i40e_aq_add_cloud_filters(9),i40e_aq_add_cloud_filters_bb(9),i40e_aq_rem_cloud_filters(9),i40e_aq_rem_cloud_filters_bb(9)
like, that's the whole squad ππ
quick reminder bestie:i40e_init_shared_codedoes not touch the hardware, but it does need to go first, and thati40e_hwstruct needs its memset-to-0 glow-up plus those seven fields filled in before you call it. no skipping steps π
okay that's the whole page π this one lives down in ./drivers/net/ethernet/intel/i40e, and the pages are dated October 2026 β mwah, kisses, go init your shared code responsibly π
β¨π
π¦ 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